| Index: webrtc/media/base/videobroadcaster.cc
|
| diff --git a/webrtc/media/base/videobroadcaster.cc b/webrtc/media/base/videobroadcaster.cc
|
| index 5fa3db733bbb66d410d3b2f8bf230c5d498cf83f..015f5206b676e239666e4fa5f374ebecb2a0270c 100644
|
| --- a/webrtc/media/base/videobroadcaster.cc
|
| +++ b/webrtc/media/base/videobroadcaster.cc
|
| @@ -25,6 +25,7 @@ void VideoBroadcaster::AddOrUpdateSink(
|
| const VideoSinkWants& wants) {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| RTC_DCHECK(sink != nullptr);
|
| + rtc::CritScope cs(&sinks_and_wants_lock_);
|
|
|
| SinkPair* sink_pair = FindSinkPair(sink);
|
| if (!sink_pair) {
|
| @@ -39,8 +40,8 @@ void VideoBroadcaster::RemoveSink(
|
| VideoSinkInterface<cricket::VideoFrame>* sink) {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| RTC_DCHECK(sink != nullptr);
|
| + rtc::CritScope cs(&sinks_and_wants_lock_);
|
| RTC_DCHECK(FindSinkPair(sink));
|
| -
|
| sinks_.erase(std::remove_if(sinks_.begin(), sinks_.end(),
|
| [sink](const SinkPair& sink_pair) {
|
| return sink_pair.sink == sink;
|
| @@ -51,16 +52,18 @@ void VideoBroadcaster::RemoveSink(
|
|
|
| bool VideoBroadcaster::frame_wanted() const {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| + rtc::CritScope cs(&sinks_and_wants_lock_);
|
| return !sinks_.empty();
|
| }
|
|
|
| VideoSinkWants VideoBroadcaster::wants() const {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| + rtc::CritScope cs(&sinks_and_wants_lock_);
|
| return current_wants_;
|
| }
|
|
|
| void VideoBroadcaster::OnFrame(const cricket::VideoFrame& frame) {
|
| - RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| + rtc::CritScope cs(&sinks_and_wants_lock_);
|
| for (auto& sink_pair : sinks_) {
|
| sink_pair.sink->OnFrame(frame);
|
| }
|
|
|