X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=common%2Fsemaphore.h;h=c50394f852e488feefb1c4629a918314218c988b;hb=f3553f118beae8eb4ec9ae62ef8b7902bbe784cd;hp=1a384397e99c936ab849ed1bacac3cff5023c015;hpb=e11b7c07af9147647360cafcc85248307f270441;p=casparcg diff --git a/common/semaphore.h b/common/semaphore.h index 1a384397e..c50394f85 100644 --- a/common/semaphore.h +++ b/common/semaphore.h @@ -110,15 +110,18 @@ public: boost::mutex::scoped_lock lock(mutex_); auto num_acquired = 0u; - while (permits_ == 0u && num_acquired < permits) + while (true) { - permits_available_.wait(lock); - auto num_wanted = permits - num_acquired; auto to_drain = std::min(num_wanted, permits_); permits_ -= to_drain; num_acquired += to_drain; + + if (num_acquired == permits) + break; + + permits_available_.wait(lock); } }