Make QPlatformIntegration not have a factory for eventdispatcher
authorJørgen Lind <jorgen.lind@nokia.com>
Wed, 27 Jul 2011 14:54:53 +0000 (16:54 +0200)
committerSamuel Rødal <samuel.rodal@nokia.com>
Thu, 28 Jul 2011 08:06:11 +0000 (10:06 +0200)
but rather an accessor for the guiThreadEventDispatcher

Change-Id: I1b9ba14efc9f338c5a67e3e24ddb0caf76c07413
Reviewed-on: http://codereview.qt.nokia.com/2321
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/plugins/platforms/wayland/qwaylanddisplay.cpp
src/plugins/platforms/wayland/qwaylanddisplay.h
src/plugins/platforms/wayland/qwaylandintegration.cpp
src/plugins/platforms/wayland/qwaylandintegration.h

index ca0e657..5880969 100644 (file)
@@ -142,6 +142,13 @@ QWaylandDisplay::QWaylandDisplay(void)
 
     wl_display_add_global_listener(mDisplay, QWaylandDisplay::displayHandleGlobal, this);
 
+    mFd = wl_display_get_fd(mDisplay, sourceUpdate, this);
+    QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
+    connect(dispatcher, SIGNAL(aboutToBlock()), this, SLOT(flushRequests()));
+
+    mReadNotifier = new QSocketNotifier(mFd, QSocketNotifier::Read, this);
+    connect(mReadNotifier, SIGNAL(activated(int)), this, SLOT(readEvents()));
+
 #ifdef QT_WAYLAND_GL_SUPPORT
     mEglIntegration = QWaylandGLIntegration::createGLIntegration(this);
 #endif
@@ -156,16 +163,6 @@ QWaylandDisplay::QWaylandDisplay(void)
     mEglIntegration->initialize();
 #endif
 
-    mFd = wl_display_get_fd(mDisplay, sourceUpdate, this);
-}
-
-void QWaylandDisplay::eventDispatcherCreated(QAbstractEventDispatcher *dispatcher)
-{
-    connect(dispatcher, SIGNAL(aboutToBlock()), this, SLOT(flushRequests()));
-
-    mReadNotifier = new QSocketNotifier(mFd, QSocketNotifier::Read, this);
-    connect(mReadNotifier, SIGNAL(activated(int)), this, SLOT(readEvents()));
-
     waitForScreens();
 }
 
index 1481288..2b7f33f 100644 (file)
@@ -92,8 +92,6 @@ public:
 
     QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
 
-    void eventDispatcherCreated(QAbstractEventDispatcher *dispatcher);
-
 public slots:
     void createNewScreen(struct wl_output *output, QRect geometry);
     void readEvents();
index d3d7edf..eb4503c 100644 (file)
@@ -51,6 +51,8 @@
 #include "QtPlatformSupport/private/qgenericunixfontdatabase_p.h"
 #include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
 
+#include <QtGui/private/qguiapplication_p.h>
+
 #include <QtGui/QWindowSystemInterface>
 #include <QtGui/QPlatformCursor>
 #include <QtGui/QSurfaceFormat>
 
 QWaylandIntegration::QWaylandIntegration()
     : mFontDb(new QGenericUnixFontDatabase())
-    , mDisplay(new QWaylandDisplay())
+    , mEventDispatcher(createUnixEventDispatcher())
     , mNativeInterface(new QWaylandNativeInterface)
 {
+    QGuiApplicationPrivate::instance()->setEventDispatcher(mEventDispatcher);
+    mDisplay = new QWaylandDisplay();
 }
 
 QPlatformNativeInterface * QWaylandIntegration::nativeInterface() const
@@ -116,11 +120,9 @@ QPlatformBackingStore *QWaylandIntegration::createPlatformBackingStore(QWindow *
     return new QWaylandShmBackingStore(window);
 }
 
-QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
+QAbstractEventDispatcher *QWaylandIntegration::guiThreadEventDispatcher() const
 {
-    QAbstractEventDispatcher *dispatcher = createUnixEventDispatcher();
-    mDisplay->eventDispatcherCreated(dispatcher);
-    return dispatcher;
+    return mEventDispatcher;
 }
 
 QPlatformFontDatabase *QWaylandIntegration::fontDatabase() const
index 3c8b996..209d5da 100644 (file)
@@ -59,7 +59,8 @@ public:
     QPlatformWindow *createPlatformWindow(QWindow *window) const;
     QPlatformGLContext *createPlatformGLContext(const QSurfaceFormat &glFormat, QPlatformGLContext *share) const;
     QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
-    QAbstractEventDispatcher *createEventDispatcher() const;
+
+    QAbstractEventDispatcher *guiThreadEventDispatcher() const;
 
     QList<QPlatformScreen *> screens() const;
 
@@ -73,6 +74,7 @@ public:
 
 private:
     QPlatformFontDatabase *mFontDb;
+    QAbstractEventDispatcher *mEventDispatcher;
     QWaylandDisplay *mDisplay;
     QPlatformNativeInterface *mNativeInterface;
 };