diff options
author | Olli Werwolff <qt-info@nokia.com> | 2011-05-25 09:52:25 +0200 |
---|---|---|
committer | Olli Werwolff <qt-info@nokia.com> | 2011-05-26 08:49:18 +0200 |
commit | 07818c429c6abaa7b7246d3e7cdcfbe642304145 (patch) | |
tree | 050bb39537063d3c5f1b4cd092889f831b1264ea /src/corelib/kernel/qeventdispatcher_win_p.h | |
parent | 4d778f7976417a94d25a4bbcbcfa3955e4ded97a (diff) | |
download | qtbase-07818c429c6abaa7b7246d3e7cdcfbe642304145.tar.gz |
Declaration of QEventDispatcherWin32Private in private header file
As the class will be used as a base class for QEventDispatcherQPA
its declaration has to be accessible from there.
Reviewed-by: Friedemann Kleint
Diffstat (limited to 'src/corelib/kernel/qeventdispatcher_win_p.h')
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_win_p.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win_p.h b/src/corelib/kernel/qeventdispatcher_win_p.h index 8fa77fdc4e..4a7aac0c04 100644 --- a/src/corelib/kernel/qeventdispatcher_win_p.h +++ b/src/corelib/kernel/qeventdispatcher_win_p.h @@ -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 |