diff --git a/services/media_engine/filters/surface_encoder_adapter.cpp b/services/media_engine/filters/surface_encoder_adapter.cpp index 9eee4be3322ab4c39d03ea08d6c5ecd105334179..c72ffbc74e15d3f2e468b03df9db720b115cbb6d 100644 --- a/services/media_engine/filters/surface_encoder_adapter.cpp +++ b/services/media_engine/filters/surface_encoder_adapter.cpp @@ -588,7 +588,9 @@ void SurfaceEncoderAdapter::ReleaseBuffer() std::vector indexs; { std::unique_lock lock(releaseBufferMutex_); - releaseBufferCondition_.wait(lock); + releaseBufferCondition_.wait(lock, [this] { + return !indexs_.empty(); + }); indexs = indexs_; indexs_.clear(); }