gpu_mode_manager.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/gpu/gpu_mode_manager.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/browser_process.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/gpu_data_manager.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GpuModeManager::RegisterPrefs(PrefRegistrySimple* registry) { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterBooleanPref( 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kHardwareAccelerationModeEnabled, true); 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GpuModeManager::GpuModeManager() 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : initial_gpu_mode_pref_(true) { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (g_browser_process->local_state()) { // Skip for unit tests 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_registrar_.Init(g_browser_process->local_state()); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do nothing when the pref changes. It takes effect after 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // chrome restarts. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_registrar_.Add( 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kHardwareAccelerationModeEnabled, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&base::DoNothing)); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) initial_gpu_mode_pref_ = IsGpuModePrefEnabled(); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!initial_gpu_mode_pref_) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::GpuDataManager* gpu_data_manager = 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::GpuDataManager::GetInstance(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(gpu_data_manager); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gpu_data_manager->DisableHardwareAcceleration(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GpuModeManager::~GpuModeManager() { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool GpuModeManager::initial_gpu_mode_pref() const { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return initial_gpu_mode_pref_; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool GpuModeManager::IsGpuModePrefEnabled() { 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* service = g_browser_process->local_state(); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(service); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return service->GetBoolean( 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kHardwareAccelerationModeEnabled); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 56