]> git.sesse.net Git - casparcg/blobdiff - common/semaphore.h
Merged CLK changes from trunk, and separated delimiter message splitting and codepage...
[casparcg] / common / semaphore.h
index 1a384397e99c936ab849ed1bacac3cff5023c015..c50394f852e488feefb1c4629a918314218c988b 100644 (file)
@@ -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);
                }
        }