From 2b90577da89a3b63714b6f560646db9724515f56 Mon Sep 17 00:00:00 2001 From: Karsten Heimrich Date: Mon, 21 Jun 2021 15:54:05 +0200 Subject: Revert "Emit _q_notify only if there's no notification pending" This reverts commit 85ee2c658a45d2958a54045951d236769640337f. Part of chain revert to go back to QWinOverlappedIoNotifier. Task-number: QTBUG-93865 Change-Id: I2f6c56127b86a8ffdc7ed52421d18f35fa349af9 Reviewed-by: Joerg Bornemann --- src/serialport/qwinoverlappedionotifier.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/serialport/qwinoverlappedionotifier.cpp b/src/serialport/qwinoverlappedionotifier.cpp index 81cacb2..f29bae0 100644 --- a/src/serialport/qwinoverlappedionotifier.cpp +++ b/src/serialport/qwinoverlappedionotifier.cpp @@ -129,7 +129,6 @@ public: HANDLE hSemaphore = nullptr; HANDLE hResultsMutex = nullptr; QAtomicInt waiting; - QAtomicInt pendingNotifications; QQueue results; }; @@ -398,17 +397,14 @@ void QWinOverlappedIoNotifierPrivate::notify(DWORD numberOfBytes, DWORD errorCod results.enqueue(IOResult(numberOfBytes, errorCode, overlapped)); ReleaseMutex(hResultsMutex); ReleaseSemaphore(hSemaphore, 1, NULL); - if (!waiting && pendingNotifications-- == 0) + if (!waiting) emit q->_q_notify(); } void QWinOverlappedIoNotifierPrivate::_q_notified() { - int n = pendingNotifications.fetchAndStoreAcquire(0); - while (--n >= 0) { - if (WaitForSingleObject(hSemaphore, 0) == WAIT_OBJECT_0) - dispatchNextIoResult(); - } + if (WaitForSingleObject(hSemaphore, 0) == WAIT_OBJECT_0) + dispatchNextIoResult(); } OVERLAPPED *QWinOverlappedIoNotifierPrivate::dispatchNextIoResult() -- cgit v1.2.1