From 2dfea3e548e8c937f9fb478eacdeeac3897af582 Mon Sep 17 00:00:00 2001 From: philipel Date: Tue, 28 Feb 2017 07:19:43 -0800 Subject: [PATCH] Avoid busy looping as the VideoReceiveStream is shut down. BUG=webrtc:7269 Review-Url: https://codereview.webrtc.org/2720963003 Cr-Commit-Position: refs/heads/master@{#16910} --- webrtc/video/video_receive_stream.cc | 8 ++++---- webrtc/video/video_receive_stream.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc index b4b9243679..fbfdb2b67f 100644 --- a/webrtc/video/video_receive_stream.cc +++ b/webrtc/video/video_receive_stream.cc @@ -468,18 +468,17 @@ void VideoReceiveStream::SetMinimumPlayoutDelay(int delay_ms) { } bool VideoReceiveStream::DecodeThreadFunction(void* ptr) { - static_cast(ptr)->Decode(); - return true; + return static_cast(ptr)->Decode(); } -void VideoReceiveStream::Decode() { +bool VideoReceiveStream::Decode() { static const int kMaxWaitForFrameMs = 3000; std::unique_ptr frame; video_coding::FrameBuffer::ReturnReason res = frame_buffer_->NextFrame(kMaxWaitForFrameMs, &frame); if (res == video_coding::FrameBuffer::ReturnReason::kStopped) - return; + return false; if (frame) { if (video_receiver_.Decode(frame.get()) == VCM_OK) @@ -489,6 +488,7 @@ void VideoReceiveStream::Decode() { << " ms, requesting keyframe."; RequestKeyFrame(); } + return true; } } // namespace internal } // namespace webrtc diff --git a/webrtc/video/video_receive_stream.h b/webrtc/video/video_receive_stream.h index 848a493191..4223081054 100644 --- a/webrtc/video/video_receive_stream.h +++ b/webrtc/video/video_receive_stream.h @@ -111,7 +111,7 @@ class VideoReceiveStream : public webrtc::VideoReceiveStream, private: static bool DecodeThreadFunction(void* ptr); - void Decode(); + bool Decode(); rtc::ThreadChecker worker_thread_checker_; rtc::ThreadChecker module_process_thread_checker_;