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

Unified Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 2242613003: Hoist SetNeedsBeginFrame messages up to the RWHostImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove base class call Created 4 years, 4 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
Index: content/browser/renderer_host/render_widget_host_impl.cc
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 3c8beb951081f1de4334db72bea9242866da30f6..27b55e101e9bd05e19bc0e7c51dae269e06cece8 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -322,10 +322,15 @@ RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) {
}
void RenderWidgetHostImpl::SetView(RenderWidgetHostViewBase* view) {
- if (view)
+ if (view) {
view_ = view->GetWeakPtr();
- else
+ // Views start out not needing begin frames, so only update its state
+ // if the value has changed.
+ if (needs_begin_frames_)
+ view_->SetNeedsBeginFrames(needs_begin_frames_);
+ } else {
view_.reset();
+ }
// If the renderer has not yet been initialized, then the surface ID
// namespace will be sent during initialization.
@@ -475,6 +480,7 @@ bool RenderWidgetHostImpl::OnMessageReceived(const IPC::Message &msg) {
OnFirstPaintAfterLoad)
IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardCompositorProto,
OnForwardCompositorProto)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_SetNeedsBeginFrames, OnSetNeedsBeginFrames)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -1304,6 +1310,15 @@ void RenderWidgetHostImpl::OnForwardCompositorProto(
delegate_->ForwardCompositorProto(this, proto);
}
+void RenderWidgetHostImpl::OnSetNeedsBeginFrames(bool needs_begin_frames) {
+ if (needs_begin_frames_ == needs_begin_frames)
+ return;
+
+ needs_begin_frames_ = needs_begin_frames;
+ if (view_)
+ view_->SetNeedsBeginFrames(needs_begin_frames);
+}
+
void RenderWidgetHostImpl::UpdateVSyncParameters(base::TimeTicks timebase,
base::TimeDelta interval) {
Send(new ViewMsg_UpdateVSyncParameters(GetRoutingID(), timebase, interval));

Powered by Google App Engine
This is Rietveld 408576698