Declaration of QEventDispatcherWin32Private in private header file
authorOlli Werwolff <qt-info@nokia.com>
Wed, 25 May 2011 07:52:25 +0000 (09:52 +0200)
committerOlli Werwolff <qt-info@nokia.com>
Thu, 26 May 2011 06:49:18 +0000 (08:49 +0200)
As the class will be used as a base class for QEventDispatcherQPA
its declaration has to be accessible from there.

Reviewed-by: Friedemann Kleint
src/corelib/kernel/qeventdispatcher_win.cpp
src/corelib/kernel/qeventdispatcher_win_p.h

index d80b0ef..fc66e9b 100644 (file)
@@ -50,7 +50,6 @@
 #include "qvarlengtharray.h"
 #include "qwineventnotifier_p.h"
 
-#include "qabstracteventdispatcher_p.h"
 #include "qcoreapplication_p.h"
 #include <private/qthread_p.h>
 #include <private/qmutexpool_p.h>
@@ -280,32 +279,6 @@ int WSAAsyncSelect(SOCKET, HWND, unsigned int, long)
 
 class QEventDispatcherWin32Private;
 
-struct QSockNot {
-    QSocketNotifier *obj;
-    int fd;
-};
-typedef QHash<int, QSockNot *> QSNDict;
-
-struct WinTimerInfo {                           // internal timer info
-    QObject *dispatcher;
-    int timerId;
-    int interval;
-    QObject *obj;                               // - object to receive events
-    bool inTimerEvent;
-    int fastTimerId;
-};
-
-class QZeroTimerEvent : public QTimerEvent
-{
-public:
-    inline QZeroTimerEvent(int timerId)
-        : QTimerEvent(timerId)
-    { t = QEvent::ZeroTimerEvent; }
-};
-
-typedef QList<WinTimerInfo*>  WinTimerVec;      // vector of TimerInfo structs
-typedef QHash<int, WinTimerInfo*> WinTimerDict; // fast dict of timers
-
 #if !defined(DWORD_PTR) && !defined(Q_OS_WIN64)
 #define DWORD_PTR DWORD
 #endif
@@ -338,47 +311,6 @@ static void resolveTimerAPI()
     }
 }
 
-
-class QEventDispatcherWin32Private : public QAbstractEventDispatcherPrivate
-{
-    Q_DECLARE_PUBLIC(QEventDispatcherWin32)
-public:
-    QEventDispatcherWin32Private();
-    ~QEventDispatcherWin32Private();
-
-    DWORD threadId;
-
-    bool interrupt;
-
-    // internal window handle used for socketnotifiers/timers/etc
-    HWND internalHwnd;
-    HHOOK getMessageHook;
-
-    // for controlling when to send posted events
-    QAtomicInt serialNumber;
-    int lastSerialNumber, sendPostedEventsWindowsTimerId;
-    QAtomicInt wakeUps;
-
-    // timers
-    WinTimerVec timerVec;
-    WinTimerDict timerDict;
-    void registerTimer(WinTimerInfo *t);
-    void unregisterTimer(WinTimerInfo *t, bool closingDown = false);
-    void sendTimerEvent(int timerId);
-
-    // socket notifiers
-    QSNDict sn_read;
-    QSNDict sn_write;
-    QSNDict sn_except;
-    void doWsaAsyncSelect(int socket);
-
-    QList<QWinEventNotifier *> winEventNotifierList;
-    void activateEventNotifier(QWinEventNotifier * wen);
-
-    QList<MSG> queuedUserInputEvents;
-    QList<MSG> queuedSocketEvents;
-};
-
 QEventDispatcherWin32Private::QEventDispatcherWin32Private()
     : threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), getMessageHook(0),
       serialNumber(0), lastSerialNumber(0), sendPostedEventsWindowsTimerId(0), wakeUps(0)
@@ -703,6 +635,10 @@ QEventDispatcherWin32::QEventDispatcherWin32(QObject *parent)
 {
 }
 
+QEventDispatcherWin32::QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent)
+    : QAbstractEventDispatcher(dd, parent)
+{ }
+
 QEventDispatcherWin32::~QEventDispatcherWin32()
 {
 }
index 8fa77fd..4a7aac0 100644 (file)
@@ -56,6 +56,8 @@
 #include "QtCore/qabstracteventdispatcher.h"
 #include "QtCore/qt_windows.h"
 
+#include "qabstracteventdispatcher_p.h"
+
 QT_BEGIN_NAMESPACE
 
 class QWinEventNotifier;
@@ -100,11 +102,80 @@ public:
 
     bool event(QEvent *e);
 
+protected:
+    QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent = 0);
+
 private:
     friend LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp);
     friend LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int, WPARAM, LPARAM);
 };
 
+struct QSockNot {
+    QSocketNotifier *obj;
+    int fd;
+};
+typedef QHash<int, QSockNot *> QSNDict;
+
+struct WinTimerInfo {                           // internal timer info
+    QObject *dispatcher;
+    int timerId;
+    int interval;
+    QObject *obj;                               // - object to receive events
+    bool inTimerEvent;
+    int fastTimerId;
+};
+
+class QZeroTimerEvent : public QTimerEvent
+{
+public:
+    inline QZeroTimerEvent(int timerId)
+        : QTimerEvent(timerId)
+    { t = QEvent::ZeroTimerEvent; }
+};
+
+typedef QList<WinTimerInfo*>  WinTimerVec;      // vector of TimerInfo structs
+typedef QHash<int, WinTimerInfo*> WinTimerDict; // fast dict of timers
+
+class Q_CORE_EXPORT QEventDispatcherWin32Private : public QAbstractEventDispatcherPrivate
+{
+    Q_DECLARE_PUBLIC(QEventDispatcherWin32)
+public:
+    QEventDispatcherWin32Private();
+    ~QEventDispatcherWin32Private();
+
+    DWORD threadId;
+
+    bool interrupt;
+
+    // internal window handle used for socketnotifiers/timers/etc
+    HWND internalHwnd;
+    HHOOK getMessageHook;
+
+    // for controlling when to send posted events
+    QAtomicInt serialNumber;
+    int lastSerialNumber, sendPostedEventsWindowsTimerId;
+    QAtomicInt wakeUps;
+
+    // timers
+    WinTimerVec timerVec;
+    WinTimerDict timerDict;
+    void registerTimer(WinTimerInfo *t);
+    void unregisterTimer(WinTimerInfo *t, bool closingDown = false);
+    void sendTimerEvent(int timerId);
+
+    // socket notifiers
+    QSNDict sn_read;
+    QSNDict sn_write;
+    QSNDict sn_except;
+    void doWsaAsyncSelect(int socket);
+
+    QList<QWinEventNotifier *> winEventNotifierList;
+    void activateEventNotifier(QWinEventNotifier * wen);
+
+    QList<MSG> queuedUserInputEvents;
+    QList<MSG> queuedSocketEvents;
+};
+
 QT_END_NAMESPACE
 
 #endif // QEVENTDISPATCHER_WIN_P_H