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