From 3de7a5ddcea8b3948d8f28d87c07666390ff02d7 Mon Sep 17 00:00:00 2001
From: "zmo@google.com" <zmo@google.com@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue, 14 May 2013 22:13:21 +0000
Subject: Refactor GpuDataManagerImpl to make it thread-safe.

Try to reland r199530 after fixing an issue that causes Mac Debug to crash when switching GPUs.

The original review can be found here: https://codereview.chromium.org/14794006/

BUG=232556
TBR=joi@chromium.org, kbr@chromium.org, piman@chromium.org

Review URL: https://codereview.chromium.org/14981007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200086 0039d316-1c4b-4281-b951-d872f2087c98
---
 content/browser/gpu/gpu_internals_ui.cc | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

(limited to 'content/browser/gpu/gpu_internals_ui.cc')

diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc
index eb7646c..6419ba8 100644
--- a/content/browser/gpu/gpu_internals_ui.cc
+++ b/content/browser/gpu/gpu_internals_ui.cc
@@ -479,9 +479,7 @@ class GpuMessageHandler
 
   // GpuDataManagerObserver implementation.
   virtual void OnGpuInfoUpdate() OVERRIDE;
-
-  // Gpu switch handler.
-  void OnGpuSwitch();
+  virtual void OnGpuSwitching() OVERRIDE;
 
   // Messages
   void OnBrowserBridgeInitialized(const base::ListValue* list);
@@ -496,8 +494,6 @@ class GpuMessageHandler
   // DCHECK).
   bool observing_;
 
-  GpuDataManagerImpl::GpuSwitchCallback gpu_switch_callback_;
-
   DISALLOW_COPY_AND_ASSIGN(GpuMessageHandler);
 };
 
@@ -508,15 +504,11 @@ class GpuMessageHandler
 ////////////////////////////////////////////////////////////////////////////////
 
 GpuMessageHandler::GpuMessageHandler()
-    : observing_(false),
-      gpu_switch_callback_(base::Bind(&GpuMessageHandler::OnGpuSwitch,
-                                      base::Unretained(this))) {
+    : observing_(false) {
 }
 
 GpuMessageHandler::~GpuMessageHandler() {
   GpuDataManagerImpl::GetInstance()->RemoveObserver(this);
-  GpuDataManagerImpl::GetInstance()->RemoveGpuSwitchCallback(
-      gpu_switch_callback_);
 }
 
 /* BrowserBridge.callAsync prepends a requestID to these messages. */
@@ -583,11 +575,8 @@ void GpuMessageHandler::OnBrowserBridgeInitialized(
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 
   // Watch for changes in GPUInfo
-  if (!observing_) {
+  if (!observing_)
     GpuDataManagerImpl::GetInstance()->AddObserver(this);
-    GpuDataManagerImpl::GetInstance()->AddGpuSwitchCallback(
-        gpu_switch_callback_);
-  }
   observing_ = true;
 
   // Tell GpuDataManager it should have full GpuInfo. If the
@@ -639,7 +628,7 @@ void GpuMessageHandler::OnGpuInfoUpdate() {
       *(gpu_info_val.get()));
 }
 
-void GpuMessageHandler::OnGpuSwitch() {
+void GpuMessageHandler::OnGpuSwitching() {
   GpuDataManagerImpl::GetInstance()->RequestCompleteGpuInfoIfNeeded();
 }
 
-- 
cgit v1.1