void QWaitConditionPrivate::post(QWaitConditionEvent *wce, bool ret) { mtx.lock(); // remove 'wce' from the queue queue.removeAll(wce); ResetEvent(wce->event); freeQueue.append(wce); // wakeups delivered after the timeout should be forwarded to the next waiter if (!ret && wce->wokenUp && !queue.isEmpty()) { QWaitConditionEvent *other = queue.first(); SetEvent(other->event); other->wokenUp = true; } mtx.unlock(); }