Extended proxy abstraction, to call certain methods to the worker thread.
Extracted from cl https://codereview.webrtc.org/1766653002/, where
AddOrUpdateSink results in a deadlock.
BUG=webrtc:5426
Review URL: https://codereview.webrtc.org/1861633002
Cr-Commit-Position: refs/heads/master@{#12281}
diff --git a/webrtc/api/peerconnectionfactory.cc b/webrtc/api/peerconnectionfactory.cc
index 852b7a8..c3c120c 100644
--- a/webrtc/api/peerconnectionfactory.cc
+++ b/webrtc/api/peerconnectionfactory.cc
@@ -211,7 +211,8 @@
rtc::scoped_refptr<VideoTrackSourceInterface> source(
VideoCapturerTrackSource::Create(worker_thread_, capturer, constraints,
false));
- return VideoTrackSourceProxy::Create(signaling_thread_, source);
+ return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
+ source);
}
rtc::scoped_refptr<VideoTrackSourceInterface>
@@ -219,7 +220,8 @@
RTC_DCHECK(signaling_thread_->IsCurrent());
rtc::scoped_refptr<VideoTrackSourceInterface> source(
VideoCapturerTrackSource::Create(worker_thread_, capturer, false));
- return VideoTrackSourceProxy::Create(signaling_thread_, source);
+ return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
+ source);
}
bool PeerConnectionFactory::StartAecDump(rtc::PlatformFile file,
@@ -321,7 +323,7 @@
RTC_DCHECK(signaling_thread_->IsCurrent());
rtc::scoped_refptr<VideoTrackInterface> track(
VideoTrack::Create(id, source));
- return VideoTrackProxy::Create(signaling_thread_, track);
+ return VideoTrackProxy::Create(signaling_thread_, worker_thread_, track);
}
rtc::scoped_refptr<AudioTrackInterface>