diff options
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qcoreapplication.h | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_win.cpp | 3 | ||||
-rw-r--r-- | src/corelib/kernel/qtimer.h | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier_p.h | 2 |
5 files changed, 7 insertions, 8 deletions
diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index b4d83414ae..a886c9d1d2 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -139,7 +139,7 @@ public: static QString applicationDirPath(); static QString applicationFilePath(); - static qint64 applicationPid(); + static qint64 applicationPid() Q_DECL_CONST_FUNCTION; #if QT_CONFIG(library) static void setLibraryPaths(const QStringList &); diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index 569fbc2796..bbd442d570 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -942,7 +942,8 @@ void QEventDispatcherWin32::activateEventNotifiers() for (int i = d->winEventNotifierList.count(); --i >= 0;) { QWinEventNotifier *notifier = d->winEventNotifierList.at(i); QWinEventNotifierPrivate *nd = QWinEventNotifierPrivate::get(notifier); - if (WaitForSingleObject(nd->handleToEvent, 0) == WAIT_OBJECT_0) { + if (nd->signaledCount.load() != 0) { + --nd->signaledCount; nd->unregisterWaitObject(); d->activateEventNotifier(notifier); } diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h index 1a65e6298d..d41573264f 100644 --- a/src/corelib/kernel/qtimer.h +++ b/src/corelib/kernel/qtimer.h @@ -165,37 +165,31 @@ Q_SIGNALS: public: #if QT_HAS_INCLUDE(<chrono>) || defined(Q_QDOC) - Q_ALWAYS_INLINE void setInterval(std::chrono::milliseconds value) { setInterval(int(value.count())); } - Q_ALWAYS_INLINE std::chrono::milliseconds intervalAsDuration() const { return std::chrono::milliseconds(interval()); } - Q_ALWAYS_INLINE std::chrono::milliseconds remainingTimeAsDuration() const { return std::chrono::milliseconds(remainingTime()); } - Q_ALWAYS_INLINE static void singleShot(std::chrono::milliseconds value, const QObject *receiver, const char *member) { singleShot(int(value.count()), receiver, member); } - Q_ALWAYS_INLINE static void singleShot(std::chrono::milliseconds value, Qt::TimerType timerType, const QObject *receiver, const char *member) { singleShot(int(value.count()), timerType, receiver, member); } - Q_ALWAYS_INLINE void start(std::chrono::milliseconds value) { start(int(value.count())); diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 6bfa6ca729..362111a2c8 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -157,6 +157,7 @@ void QWinEventNotifier::setHandle(HANDLE hEvent) Q_D(QWinEventNotifier); setEnabled(false); d->handleToEvent = hEvent; + d->signaledCount = 0; } /*! @@ -254,6 +255,7 @@ static void CALLBACK wfsoCallback(void *context, BOOLEAN /*ignore*/) QAbstractEventDispatcher *eventDispatcher = nd->threadData->eventDispatcher.load(); QEventDispatcherWin32Private *edp = QEventDispatcherWin32Private::get( static_cast<QEventDispatcherWin32 *>(eventDispatcher)); + ++nd->signaledCount; SetEvent(edp->winEventNotifierActivatedEvent); } diff --git a/src/corelib/kernel/qwineventnotifier_p.h b/src/corelib/kernel/qwineventnotifier_p.h index bddeaaf134..8bb2c3159a 100644 --- a/src/corelib/kernel/qwineventnotifier_p.h +++ b/src/corelib/kernel/qwineventnotifier_p.h @@ -54,6 +54,7 @@ #include "qwineventnotifier.h" #include <private/qobject_p.h> +#include <QtCore/qatomic.h> #include <QtCore/qt_windows.h> QT_BEGIN_NAMESPACE @@ -73,6 +74,7 @@ public: HANDLE handleToEvent; HANDLE waitHandle = NULL; + QAtomicInt signaledCount; bool enabled; }; |