Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2336)

Unified Diff: content/renderer/render_widget.cc

Issue 278353003: Make RendererMediaPlayerManager a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor fix. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« content/renderer/render_frame_impl.cc ('K') | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 5c82eda23832f6bf500bb5cb2975ce53e2c71cbd..9561fb9d3fedbeadd7797d6b5a0792db67b159b1 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1206,6 +1206,19 @@ void RenderWidget::didBecomeReadyForAdditionalInput() {
void RenderWidget::DidCommitCompositorFrame() {
FOR_EACH_OBSERVER(RenderFrameImpl, swapped_out_frames_,
DidCommitCompositorFrame());
+#if defined(VIDEO_HOLE)
+ // Not using FOR_EACH_OBSERVER because |swapped_out_frames_| and
+ // |video_hole_frames_| may have common frames.
+ if (!video_hole_frames_.might_have_observers())
+ return;
+ ObserverListBase<RenderFrameImpl>::Iterator iter(video_hole_frames_);
+ RenderFrameImpl* frame;
+ while ((frame = iter.GetNext()) != NULL) {
+ // Prevent duplicate notification of DidCommitCompositorFrame().
+ if (!swapped_out_frames_.HasObserver(frame))
+ frame->DidCommitCompositorFrame();
+ }
+#endif // defined(VIDEO_HOLE)
}
void RenderWidget::didCommitAndDrawCompositorFrame() {
@@ -2080,4 +2093,14 @@ void RenderWidget::UnregisterSwappedOutChildFrame(RenderFrameImpl* frame) {
swapped_out_frames_.RemoveObserver(frame);
}
+#if defined(VIDEO_HOLE)
+void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
+ video_hole_frames_.AddObserver(frame);
+}
+
+void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
+ video_hole_frames_.RemoveObserver(frame);
+}
+#endif // defined(VIDEO_HOLE)
+
} // namespace content
« content/renderer/render_frame_impl.cc ('K') | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698