summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxintegration.cpp
diff options
context:
space:
mode:
authorRafael Roquetto <rafael.roquetto.qnx@kdab.com>2012-06-20 11:22:32 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-26 11:07:20 +0200
commit9e66ee2d59d28d61e06e5c57485f1a331b82f269 (patch)
tree2ed7fd840cbc77f9622f40fd267f1dd9cad40fbc /src/plugins/platforms/qnx/qqnxintegration.cpp
parent197b145a23564910f6316ca0b2f9a1b39efaf9ef (diff)
[QNX] Enable MT screen event handling on Blackberry
Consuming incoming screen events through the BPS event dispatcher on its current incarnation has proven to be very inefficient since it cannot put up with the screen event throughput. This patch enables the screen event thread also for Q_OS_BLACKBERRY platforms, in addition to stock QNX. This behavior can still be configured through the project file, though. Task-number: QTBUG-26177 Change-Id: I98a3b22549c9fbf0c16b5a8c39a55c1eaa6ec1f4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxintegration.cpp')
-rw-r--r--src/plugins/platforms/qnx/qqnxintegration.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp
index eb95f2d1bd..f20fb6011f 100644
--- a/src/plugins/platforms/qnx/qqnxintegration.cpp
+++ b/src/plugins/platforms/qnx/qqnxintegration.cpp
@@ -156,8 +156,7 @@ QQnxIntegration::QQnxIntegration()
#endif
// Create/start event thread
- // Not on BlackBerry, it has specialised event dispatcher which also handles screen events
-#if !defined(Q_OS_BLACKBERRY)
+#if defined(QQNX_SCREENEVENTTHREAD)
m_screenEventThread = new QQnxScreenEventThread(m_screenContext, m_screenEventHandler);
m_screenEventThread->start();
#endif
@@ -184,7 +183,8 @@ QQnxIntegration::QQnxIntegration()
#if defined(Q_OS_BLACKBERRY)
QQnxVirtualKeyboardBps* virtualKeyboardBps = new QQnxVirtualKeyboardBps;
- m_bpsEventFilter = new QQnxBpsEventFilter(m_navigatorEventHandler, m_screenEventHandler, virtualKeyboardBps);
+ m_bpsEventFilter = new QQnxBpsEventFilter(m_navigatorEventHandler,
+ (m_screenEventThread ? 0 : m_screenEventHandler), virtualKeyboardBps);
m_bpsEventFilter->installOnEventDispatcher(m_eventDispatcher);
m_virtualKeyboard = virtualKeyboardBps;
@@ -198,7 +198,7 @@ QQnxIntegration::QQnxIntegration()
// create the displays first.
createDisplays();
-#if defined(Q_OS_BLACKBERRY)
+#if !defined(QQNX_SCREENEVENTTHREAD) && defined(Q_OS_BLACKBERRY)
// Register for screen domain events with bps
Q_FOREACH (QQnxScreen *screen, m_screens)
m_bpsEventFilter->registerForScreenEvents(screen);
@@ -241,13 +241,15 @@ QQnxIntegration::~QQnxIntegration()
#endif
delete m_navigatorEventHandler;
-#if !defined(Q_OS_BLACKBERRY)
+#if defined(QQNX_SCREENEVENTTHREAD)
// Stop/destroy screen event thread
delete m_screenEventThread;
-#else
+#elif defined(Q_OS_BLACKBERRY)
Q_FOREACH (QQnxScreen *screen, m_screens)
m_bpsEventFilter->unregisterForScreenEvents(screen);
+#endif
+#if defined(Q_OS_BLACKBERRY)
delete m_bpsEventFilter;
#endif