summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/blackberry/qbbintegration.cpp
diff options
context:
space:
mode:
authorKevin Krammer <kevin.krammer.qnx@kdab.com>2012-03-20 12:55:50 (GMT)
committerQt by Nokia <qt-info@nokia.com>2012-03-22 09:51:43 (GMT)
commit25db638d26a0d3ca6a403987d40e142f498b21ad (patch)
treedcea1ec855c89d00339da5fa31bf8e264704de05 /src/plugins/platforms/blackberry/qbbintegration.cpp
parent37cfea29101361e57c185923e2de7ce0ab3ab74e (diff)
downloadQt-25db638d26a0d3ca6a403987d40e142f498b21ad.zip
Qt-25db638d26a0d3ca6a403987d40e142f498b21ad.tar.gz
Qt-25db638d26a0d3ca6a403987d40e142f498b21ad.tar.bz2
Use main thread event loop for navigator event processing
Removes the need for an extra thread by creating the event handler's socket notifier in the context of the main thread. Backport of 9dc86ac0f2d019f93665c1ae0e3c2cd33fd88bce Change-Id: I5c31d904191f45698085e8fd576481018e072ef4 Reviewed-by: Sean Harmer <sh@theharmers.co.uk> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Diffstat (limited to 'src/plugins/platforms/blackberry/qbbintegration.cpp')
-rw-r--r--src/plugins/platforms/blackberry/qbbintegration.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/plugins/platforms/blackberry/qbbintegration.cpp b/src/plugins/platforms/blackberry/qbbintegration.cpp
index cc16938..7cada16 100644
--- a/src/plugins/platforms/blackberry/qbbintegration.cpp
+++ b/src/plugins/platforms/blackberry/qbbintegration.cpp
@@ -44,7 +44,7 @@
#include "qbbeventthread.h"
#include "qbbglcontext.h"
#include "qbbglwindowsurface.h"
-#include "qbbnavigatorthread.h"
+#include "qbbnavigatoreventhandler.h"
#include "qbbrasterwindowsurface.h"
#include "qbbscreen.h"
#include "qbbwindow.h"
@@ -93,9 +93,15 @@ QBBIntegration::QBBIntegration() :
mEventThread = new QBBEventThread(mContext, *QBBScreen::primaryDisplay());
mEventThread->start();
- // create/start navigator thread
- mNavigatorThread = new QBBNavigatorThread(*QBBScreen::primaryDisplay());
- mNavigatorThread->start();
+ // Create/start navigator event handler
+ // Not on BlackBerry, it has specialised event dispatcher which also handles navigator events
+#ifndef Q_OS_BLACKBERRY
+ mNavigatorEventHandler = new QBBNavigatorEventHandler(*QBBScreen::primaryDisplay());
+
+ // delay invocation of start() to the time the event loop is up and running
+ // needed to have the QThread internals of the main thread properly initialized
+ QMetaObject::invokeMethod(mNavigatorEventHandler, "start", Qt::QueuedConnection);
+#endif
#ifdef QBBLOCALETHREAD_ENABLED
// Start the locale change monitoring thread.
@@ -127,7 +133,7 @@ QBBIntegration::~QBBIntegration()
delete mEventThread;
// stop/destroy navigator thread
- delete mNavigatorThread;
+ delete mNavigatorEventHandler;
// destroy all displays
QBBScreen::destroyDisplays();