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 5fdc05b7790632d2ee295ced5e165996501b76ec..6b562d216914642cfb393ccb98b3837ce83df5c3 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -396,7 +396,9 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
dummy_shutdown_event_(false, false), |
#endif |
supports_browser_plugin_(supports_browser_plugin), |
- is_guest_(is_guest) { |
+ is_guest_(is_guest), |
+ gpu_switch_callback_(base::Bind(&RenderProcessHostImpl::OnGpuSwitch, |
+ base::Unretained(this))) { |
widget_helper_ = new RenderWidgetHelper(); |
ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); |
@@ -424,6 +426,8 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
RenderProcessHostImpl::~RenderProcessHostImpl() { |
DCHECK(!run_renderer_in_process()); |
ChildProcessSecurityPolicyImpl::GetInstance()->Remove(GetID()); |
+ GpuDataManagerImpl::GetInstance()->RemoveGpuSwitchCallback( |
+ gpu_switch_callback_); |
// We may have some unsent messages at this point, but that's OK. |
channel_.reset(); |
@@ -544,6 +548,8 @@ bool RenderProcessHostImpl::Init() { |
fast_shutdown_started_ = false; |
} |
+ GpuDataManagerImpl::GetInstance()->AddGpuSwitchCallback(gpu_switch_callback_); |
+ |
is_initialized_ = true; |
return true; |
} |
@@ -1748,4 +1754,20 @@ void RenderProcessHostImpl::OnCompositorSurfaceBuffersSwappedNoHost( |
ack_params); |
} |
+void RenderProcessHostImpl::OnGpuSwitch() { |
+ 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 |