| 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 499f1616223036ecf528498a9d3b0b8a08391e9a..e29a7e620aeb6407b3884068ece3adb878fdeb00 100644
|
| --- a/content/browser/renderer_host/render_process_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_process_host_impl.cc
|
| @@ -400,7 +400,8 @@ RenderProcessHostImpl::RenderProcessHostImpl(
|
| dummy_shutdown_event_(false, false),
|
| #endif
|
| supports_browser_plugin_(supports_browser_plugin),
|
| - is_guest_(is_guest) {
|
| + is_guest_(is_guest),
|
| + gpu_observer_registered_(false) {
|
| widget_helper_ = new RenderWidgetHelper();
|
|
|
| ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID());
|
| @@ -429,6 +430,11 @@ RenderProcessHostImpl::~RenderProcessHostImpl() {
|
| DCHECK(!run_renderer_in_process());
|
| ChildProcessSecurityPolicyImpl::GetInstance()->Remove(GetID());
|
|
|
| + if (gpu_observer_registered_) {
|
| + GpuDataManagerImpl::GetInstance()->RemoveObserver(this);
|
| + gpu_observer_registered_ = false;
|
| + }
|
| +
|
| // We may have some unsent messages at this point, but that's OK.
|
| channel_.reset();
|
| while (!queued_messages_.empty()) {
|
| @@ -552,6 +558,11 @@ bool RenderProcessHostImpl::Init() {
|
| fast_shutdown_started_ = false;
|
| }
|
|
|
| + if (!gpu_observer_registered_) {
|
| + gpu_observer_registered_ = true;
|
| + GpuDataManagerImpl::GetInstance()->AddObserver(this);
|
| + }
|
| +
|
| is_initialized_ = true;
|
| return true;
|
| }
|
| @@ -1773,4 +1784,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
|
|
|