From b837d318735e167456baa81d38d9178c8f36e7f5 Mon Sep 17 00:00:00 2001 From: Helge Norberg Date: Fri, 13 Jan 2017 17:02:00 +0100 Subject: [PATCH] [decklink_consumer] Fixed possible dead-lock in frame queue --- modules/decklink/consumer/decklink_consumer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/decklink/consumer/decklink_consumer.cpp b/modules/decklink/consumer/decklink_consumer.cpp index ca847727e..39dcde7f4 100644 --- a/modules/decklink/consumer/decklink_consumer.cpp +++ b/modules/decklink/consumer/decklink_consumer.cpp @@ -647,10 +647,13 @@ public: if(!is_running_) CASPAR_THROW_EXCEPTION(caspar_exception() << msg_info(print() + L" Is not running.")); + boost::lock_guard lock(send_completion_mutex_); + if (frame_buffer_.try_push(frame)) + { + send_completion_ = std::packaged_task(); return make_ready_future(true); - - boost::lock_guard lock(send_completion_mutex_); + } send_completion_ = std::packaged_task([frame, this] () mutable -> bool { -- 2.39.2