| 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
|
|
|