diff --git a/winpr/libwinpr/utils/collections/Queue.c b/winpr/libwinpr/utils/collections/Queue.c index d24e1dd52..8bbdea83a 100644 --- a/winpr/libwinpr/utils/collections/Queue.c +++ b/winpr/libwinpr/utils/collections/Queue.c @@ -215,8 +215,12 @@ BOOL Queue_Enqueue(wQueue* queue, const void* obj) queue->array[queue->tail] = cnv.v; } queue->tail = (queue->tail + 1) % queue->capacity; + + const BOOL signalSet = queue->size == 0; queue->size++; - SetEvent(queue->event); + + if (signalSet) + SetEvent(queue->event); out: Queue_Unlock(queue);