]> git.sesse.net Git - casparcg/commitdiff
[decklink_consumer] Fixed possible dead-lock in frame queue
authorHelge Norberg <helge.norberg@svt.se>
Fri, 13 Jan 2017 16:02:00 +0000 (17:02 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Fri, 13 Jan 2017 16:02:00 +0000 (17:02 +0100)
modules/decklink/consumer/decklink_consumer.cpp

index ca847727eb8b6849834fdb989763757482749a1f..39dcde7f40804edf19f80e550f301898d39199aa 100644 (file)
@@ -647,10 +647,13 @@ public:
                if(!is_running_)
                        CASPAR_THROW_EXCEPTION(caspar_exception() << msg_info(print() + L" Is not running."));
 
+               boost::lock_guard<boost::mutex> lock(send_completion_mutex_);
+
                if (frame_buffer_.try_push(frame))
+               {
+                       send_completion_ = std::packaged_task<bool()>();
                        return make_ready_future(true);
-
-               boost::lock_guard<boost::mutex> lock(send_completion_mutex_);
+               }
 
                send_completion_ = std::packaged_task<bool ()>([frame, this] () mutable -> bool
                {