Index: talk/media/base/capturerenderadapter.cc |
diff --git a/talk/media/base/capturerenderadapter.cc b/talk/media/base/capturerenderadapter.cc |
index 3fdb68be9bb2340ee9293db4d2720ad373236939..b19ac0bc8229322f447c2d3b0a49815967f79060 100644 |
--- a/talk/media/base/capturerenderadapter.cc |
+++ b/talk/media/base/capturerenderadapter.cc |
@@ -61,31 +61,30 @@ CaptureRenderAdapter* CaptureRenderAdapter::Create( |
return return_value; |
} |
-bool CaptureRenderAdapter::AddRenderer(VideoRenderer* video_renderer) { |
- if (!video_renderer) { |
- return false; |
- } |
+void CaptureRenderAdapter::AddRenderer(VideoRenderer* video_renderer) { |
+ RTC_DCHECK(video_renderer); |
+ |
rtc::CritScope cs(&capture_crit_); |
- if (IsRendererRegistered(*video_renderer)) { |
- return false; |
- } |
- video_renderers_.push_back(VideoRendererInfo(video_renderer)); |
- return true; |
+ // This implements set semantics, the same renderer can only be |
+ // added once. TODO(nisse): Is this really needed? |
tommi
2016/01/21 08:45:34
nit: move TODO to a separate line.
Agree that this
nisse-webrtc
2016/01/21 09:11:44
Done. I switched to using std::find, and deleted t
|
+ if (!IsRendererRegistered(*video_renderer)) |
+ video_renderers_.push_back(video_renderer); |
} |
-bool CaptureRenderAdapter::RemoveRenderer(VideoRenderer* video_renderer) { |
- if (!video_renderer) { |
- return false; |
- } |
+void CaptureRenderAdapter::RemoveRenderer(VideoRenderer* video_renderer) { |
+ RTC_DCHECK(video_renderer); |
+ |
rtc::CritScope cs(&capture_crit_); |
+ // TODO(nisse): Switch to using std::list, and use its remove |
+ // method. And similarly in VideoTrackRenderers, which this class |
+ // mostly duplicates. |
for (VideoRenderers::iterator iter = video_renderers_.begin(); |
iter != video_renderers_.end(); ++iter) { |
- if (video_renderer == iter->renderer) { |
+ if (video_renderer == *iter) { |
video_renderers_.erase(iter); |
- return true; |
+ break; |
} |
} |
- return false; |
} |
void CaptureRenderAdapter::Init() { |
@@ -100,26 +99,9 @@ void CaptureRenderAdapter::OnVideoFrame(VideoCapturer* capturer, |
if (video_renderers_.empty()) { |
return; |
} |
- MaybeSetRenderingSize(video_frame); |
- for (VideoRenderers::iterator iter = video_renderers_.begin(); |
- iter != video_renderers_.end(); ++iter) { |
- VideoRenderer* video_renderer = iter->renderer; |
- video_renderer->RenderFrame(video_frame); |
- } |
-} |
- |
-// The renderer_crit_ lock needs to be taken when calling this function. |
-void CaptureRenderAdapter::MaybeSetRenderingSize(const VideoFrame* frame) { |
- for (VideoRenderers::iterator iter = video_renderers_.begin(); |
- iter != video_renderers_.end(); ++iter) { |
- const bool new_resolution = iter->render_width != frame->GetWidth() || |
- iter->render_height != frame->GetHeight(); |
- if (new_resolution) { |
- iter->render_width = frame->GetWidth(); |
- iter->render_height = frame->GetHeight(); |
- } |
- } |
+ for (auto* renderer : video_renderers_) |
+ renderer->RenderFrame(video_frame); |
} |
// The renderer_crit_ lock needs to be taken when calling this function. |
@@ -127,7 +109,7 @@ bool CaptureRenderAdapter::IsRendererRegistered( |
const VideoRenderer& video_renderer) const { |
for (VideoRenderers::const_iterator iter = video_renderers_.begin(); |
iter != video_renderers_.end(); ++iter) { |
tommi
2016/01/21 08:45:34
nit: you could update this loop too, but this meth
|
- if (&video_renderer == iter->renderer) { |
+ if (&video_renderer == *iter) { |
return true; |
} |
} |