diff --git a/src/media/video/sinkclient.cpp b/src/media/video/sinkclient.cpp index 16b0ec343c0ac1fd7180043c695d93e47243e85f..1126eabe291c12fe5403b50a9133c6af65fa75bb 100644 --- a/src/media/video/sinkclient.cpp +++ b/src/media/video/sinkclient.cpp @@ -353,7 +353,7 @@ SinkClient::update(Observable<std::shared_ptr<MediaFrame>>* /*obs*/, } #endif - std::lock_guard<std::mutex> lock(mtx_); + std::unique_lock<std::mutex> lock(mtx_); if (avTarget_.push) { auto outFrame = std::make_unique<VideoFrame>(); outFrame->copyFrom(*std::static_pointer_cast<VideoFrame>(frame_p)); @@ -424,6 +424,7 @@ SinkClient::update(Observable<std::shared_ptr<MediaFrame>>* /*obs*/, } if (frame->height() != height_ || frame->width() != width_) { + lock.unlock(); setFrameSize(0, 0); setFrameSize(frame->width(), frame->height()); return;