summaryrefslogtreecommitdiffstats
path: root/content/browser/gpu/gpu_internals_ui.cc
diff options
context:
space:
mode:
authorzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 20:42:52 +0000
committerzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-10 20:42:52 +0000
commitd7867f32ddeb1118191871e2a7cec81bfd9766ad (patch)
treee57b0a618cb050c1c856bb5fde08d1a6ae699be4 /content/browser/gpu/gpu_internals_ui.cc
parent0078195f0a0ca601ad4d5d5d5090ffc5128d1396 (diff)
downloadchromium_src-d7867f32ddeb1118191871e2a7cec81bfd9766ad.zip
chromium_src-d7867f32ddeb1118191871e2a7cec81bfd9766ad.tar.gz
chromium_src-d7867f32ddeb1118191871e2a7cec81bfd9766ad.tar.bz2
Refactor GpuDataManagerImpl to make it thread-safe, now and forever.
The original impl of GpuDataManagerImpl is thread-safe, but gradurally it regressed. In order to make sure this class is thread-safe in the future, we move all code to GpuDataManagerImplPrivate, and make GpuDataManagerImpl a simple wrapper around GpuDataManagerImplPrivate's public functions, where each function call is guarded by lock, thus thread-safe. BUG=232556 TEST=asan bots no longer crashes as described in crbug.com/232556 R=joi@chromium.org, kbr@chromium.org, piman@chromium.org Review URL: https://codereview.chromium.org/14794006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199530 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/gpu/gpu_internals_ui.cc')
-rw-r--r--content/browser/gpu/gpu_internals_ui.cc19
1 files changed, 4 insertions, 15 deletions
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();
}