diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2020-09-17 16:41:45 +0300 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2020-09-18 17:07:19 +0300 |
commit | c6d1e7ad389a6db61a33016347772f885bf5e7d9 (patch) | |
tree | 7b9260746fb7767b94cee2b76af50b6481bd32db /src/corelib/kernel/qwineventnotifier.cpp | |
parent | 8716413afcb4718352a93d90adb6f38491ad236e (diff) |
QWinEventNotifier: reinterpret 'int signaledCount' as a 'bool signaled'
In fact, this variable can take only two values: 0 and 1. By
interpreting its value as boolean, we can use relaxed store operations
instead of atomic increments. This is safe, because it's guarded by
'activateEventNotifiersPosted' variable, which already provides a
release/acquire semantic.
Change-Id: If9adb7d022f1500ee7e8b61f336d8732f9b88d4c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/corelib/kernel/qwineventnotifier.cpp')
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 8cf6b018d4..5a3ad9ed5d 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -202,7 +202,7 @@ void QWinEventNotifier::setEnabled(bool enable) } if (enable) { - d->signaledCount = 0; + d->signaled.storeRelaxed(false); eventDispatcher->registerEventNotifier(this); } else { eventDispatcher->unregisterEventNotifier(this); @@ -245,7 +245,7 @@ static void CALLBACK wfsoCallback(void *context, BOOLEAN /*ignore*/) QEventDispatcherWin32Private *edp = QEventDispatcherWin32Private::get( static_cast<QEventDispatcherWin32 *>(eventDispatcher)); - ++nd->signaledCount; + nd->signaled.storeRelaxed(true); edp->postActivateEventNotifiers(); } |