From ea5698765bb3f5bbfc8801cb934a419a432ad75c Mon Sep 17 00:00:00 2001 From: yuyongchao Date: Sun, 8 Oct 2023 02:38:51 +0000 Subject: [PATCH] fix:wait to wait until Signed-off-by: yuyongchao --- .../nodes/src/source_node/source_node.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/camera/vdi_base/common/pipeline_core/nodes/src/source_node/source_node.cpp b/camera/vdi_base/common/pipeline_core/nodes/src/source_node/source_node.cpp index ba631bf770..ad9fbc4412 100644 --- a/camera/vdi_base/common/pipeline_core/nodes/src/source_node/source_node.cpp +++ b/camera/vdi_base/common/pipeline_core/nodes/src/source_node/source_node.cpp @@ -295,8 +295,15 @@ void SourceNode::PortHandler::DistributeBuffers() std::shared_ptr buffer = nullptr; { std::unique_lock l(rblock); - rbcv.wait(l, [this] { return !dbtRun || !respondBufferList.empty(); }); - if (!dbtRun) { + auto timeout = std::chrono::system_clock::now() + std::chrono::milliseconds(5000); // 5000ms + if (!rbcv.wait_until(l, timeout, [this] { + return (!dbtRun || !respondBufferList.empty()); + })) { + CAMERA_LOGE("DistributeBuffers timeout, dbtRun=%{public}d, respondBufferList size=%{public}d", + dbtRun.load(std::memory_order_acquire), respondBufferList.size()); + } + + if (!dbtRun || respondBufferList.empty()) { return; } -- Gitee