diff --git a/services/screendemo/decoder_demo.cpp b/services/screendemo/decoder_demo.cpp index 2d8cf6000a98e33bf19ecae13f66266caf61052d..d48e4e63e435775d1fd8066c4f1e310bba13a4e7 100644 --- a/services/screendemo/decoder_demo.cpp +++ b/services/screendemo/decoder_demo.cpp @@ -137,19 +137,21 @@ int32_t VDecDemo::Stop() isRunning_.store(false); if (inputLoop_ != nullptr && inputLoop_->joinable()) { - unique_lock lock(signal_->inMutex_); - signal_->inQueue_.push(INDEX_CONSTANT); - signal_->inCond_.notify_all(); - lock.unlock(); + { + unique_lock inLock(signal_->inMutex_); + signal_->inQueue_.push(INDEX_CONSTANT); + signal_->inCond_.notify_all(); + } inputLoop_->join(); inputLoop_.reset(); } if (outputLoop_ != nullptr && outputLoop_->joinable()) { - unique_lock lock(signal_->outMutex_); - signal_->outQueue_.push(INDEX_CONSTANT); - signal_->outCond_.notify_all(); - lock.unlock(); + { + unique_lock outLock(signal_->outMutex_); + signal_->outQueue_.push(INDEX_CONSTANT); + signal_->outCond_.notify_all(); + } outputLoop_->join(); outputLoop_.reset(); }