summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp48
-rw-r--r--src/corelib/kernel/qeventdispatcher_win_p.h3
2 files changed, 12 insertions, 39 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 623765c8de..9942bed750 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -411,7 +411,7 @@ void QEventDispatcherWin32Private::unregisterTimer(WinTimerInfo *t)
} else if (t->fastTimerId != 0) {
timeKillEvent(t->fastTimerId);
QCoreApplicationPrivate::removePostedTimerEvent(t->dispatcher, t->timerId);
- } else if (internalHwnd) {
+ } else {
KillTimer(internalHwnd, t->timerId);
}
t->timerId = -1;
@@ -463,12 +463,16 @@ void QEventDispatcherWin32Private::postActivateEventNotifiers()
QCoreApplication::postEvent(q, new QEvent(QEvent::WinEventAct));
}
-void QEventDispatcherWin32::createInternalHwnd()
+QEventDispatcherWin32::QEventDispatcherWin32(QObject *parent)
+ : QEventDispatcherWin32(*new QEventDispatcherWin32Private, parent)
+{
+}
+
+QEventDispatcherWin32::QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent)
+ : QAbstractEventDispatcher(dd, parent)
{
Q_D(QEventDispatcherWin32);
- if (d->internalHwnd)
- return;
d->internalHwnd = qt_create_internal_window(this);
// setup GetMessage hook needed to drive our posted events
@@ -478,21 +482,8 @@ void QEventDispatcherWin32::createInternalHwnd()
qFatal("Qt: INTERNAL ERROR: failed to install GetMessage hook: %d, %ls",
errorCode, qUtf16Printable(qt_error_string(errorCode)));
}
-
- // start all normal timers
- for (int i = 0; i < d->timerVec.count(); ++i)
- d->registerTimer(d->timerVec.at(i));
}
-QEventDispatcherWin32::QEventDispatcherWin32(QObject *parent)
- : QAbstractEventDispatcher(*new QEventDispatcherWin32Private, parent)
-{
-}
-
-QEventDispatcherWin32::QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent)
- : QAbstractEventDispatcher(dd, parent)
-{ }
-
QEventDispatcherWin32::~QEventDispatcherWin32()
{
}
@@ -517,11 +508,6 @@ bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags)
{
Q_D(QEventDispatcherWin32);
- if (!d->internalHwnd) {
- createInternalHwnd();
- wakeUp(); // trigger a call to sendPostedEvents()
- }
-
d->interrupt.storeRelaxed(false);
emit awake();
@@ -642,8 +628,6 @@ void QEventDispatcherWin32::registerSocketNotifier(QSocketNotifier *notifier)
"same socket %d and type %s", sockfd, t[type]);
}
- createInternalHwnd();
-
QSockNot *sn = new QSockNot;
sn->obj = notifier;
sn->fd = sockfd;
@@ -752,8 +736,7 @@ void QEventDispatcherWin32::registerTimer(int timerId, int interval, Qt::TimerTy
t->inTimerEvent = false;
t->fastTimerId = 0;
- if (d->internalHwnd)
- d->registerTimer(t);
+ d->registerTimer(t);
d->timerVec.append(t); // store in timer vector
d->timerDict.insert(t->timerId, t); // store timers in dict
@@ -849,8 +832,6 @@ bool QEventDispatcherWin32::registerEventNotifier(QWinEventNotifier *notifier)
if (d->winEventNotifierList.contains(notifier))
return true;
- createInternalHwnd();
-
d->winEventNotifierList.append(notifier);
d->winEventNotifierListModified = true;
@@ -933,10 +914,7 @@ int QEventDispatcherWin32::remainingTime(int timerId)
if (t && t->timerId == timerId) {
// timer found, return time to wait
- if (d->internalHwnd)
- return t->timeout > currentTime ? t->timeout - currentTime : 0;
- else
- return t->interval;
+ return t->timeout > currentTime ? t->timeout - currentTime : 0;
}
}
@@ -950,7 +928,7 @@ int QEventDispatcherWin32::remainingTime(int timerId)
void QEventDispatcherWin32::wakeUp()
{
Q_D(QEventDispatcherWin32);
- if (d->internalHwnd && d->wakeUps.testAndSetRelaxed(0, 1)) {
+ if (d->wakeUps.testAndSetRelaxed(0, 1)) {
// post a WM_QT_SENDPOSTEDEVENTS to this thread if there isn't one already pending
if (!PostMessage(d->internalHwnd, WM_QT_SENDPOSTEDEVENTS, 0, 0))
qErrnoWarning("QEventDispatcherWin32::wakeUp: Failed to post a message");
@@ -1056,9 +1034,7 @@ void QEventDispatcherWin32::sendPostedEvents()
HWND QEventDispatcherWin32::internalHwnd()
{
- Q_D(QEventDispatcherWin32);
- createInternalHwnd();
- return d->internalHwnd;
+ return d_func()->internalHwnd;
}
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qeventdispatcher_win_p.h b/src/corelib/kernel/qeventdispatcher_win_p.h
index acad28530e..29cd960d40 100644
--- a/src/corelib/kernel/qeventdispatcher_win_p.h
+++ b/src/corelib/kernel/qeventdispatcher_win_p.h
@@ -72,9 +72,6 @@ class Q_CORE_EXPORT QEventDispatcherWin32 : public QAbstractEventDispatcher
Q_OBJECT
Q_DECLARE_PRIVATE(QEventDispatcherWin32)
-protected:
- void createInternalHwnd();
-
public:
explicit QEventDispatcherWin32(QObject *parent = 0);
~QEventDispatcherWin32();