Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index 7b2634a34b76e32bc6387bf4daef0522318ca11c..0e919f849d85f2740b444b227ed906ba6f1e8f38 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -427,6 +427,7 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
RenderProcessHostImpl::~RenderProcessHostImpl() { |
DCHECK(!run_renderer_in_process()); |
ChildProcessSecurityPolicyImpl::GetInstance()->Remove(GetID()); |
+ GpuDataManagerImpl::GetInstance()->RemoveObserver(this); |
// We may have some unsent messages at this point, but that's OK. |
channel_.reset(); |
@@ -551,6 +552,8 @@ bool RenderProcessHostImpl::Init() { |
fast_shutdown_started_ = false; |
} |
+ GpuDataManagerImpl::GetInstance()->AddObserver(this); |
+ |
is_initialized_ = true; |
return true; |
} |
@@ -1761,4 +1764,20 @@ void RenderProcessHostImpl::OnCompositorSurfaceBuffersSwappedNoHost( |
ack_params); |
} |
+void RenderProcessHostImpl::OnGpuSwitching() { |
+ for (RenderWidgetHostsIterator iter = GetRenderWidgetHostsIterator(); |
+ !iter.IsAtEnd(); |
+ iter.Advance()) { |
+ const RenderWidgetHost* widget = iter.GetCurrentValue(); |
+ DCHECK(widget); |
+ if (!widget || !widget->IsRenderView()) |
+ continue; |
+ |
+ RenderViewHost* rvh = |
+ RenderViewHost::From(const_cast<RenderWidgetHost*>(widget)); |
+ |
+ rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences()); |
+ } |
+} |
+ |
} // namespace content |