]> git.sesse.net Git - casparcg/blobdiff - common/semaphore.h
[semaphore] Fixed serious bug in callback based acquire where the callback was not...
[casparcg] / common / semaphore.h
index 7baccda0e52df188f8e782e135406b8166a8488d..19ec73ad74398522f819314f838007ce6c951230 100644 (file)
@@ -143,7 +143,14 @@ public:
        {
                boost::unique_lock<boost::mutex> lock(mutex_);
 
-               callbacks_per_requested_permits_[permits].push(std::move(acquired_callback));
+               if (permits_ >= permits)
+               {
+                       permits_ -= permits;
+                       lock.unlock();
+                       acquired_callback();
+               }
+               else
+                       callbacks_per_requested_permits_[permits].push(std::move(acquired_callback));
        }
 
        /**