From 9be6b70c70a7d14a0c720801f9aeb631a00bbc0e Mon Sep 17 00:00:00 2001 From: Russell Brenner Date: Tue, 1 Feb 2011 10:33:07 -0800 Subject: Fix 3366514 (again): browser emulator crash Added TilesManager::hardwareAccelerationEnabled() to check internal gInstance without the side-effect of creating it, if null. Used by BaseLayerAndroid to avoid creating an instance during a destructor. Emulator will have a null gInstance, so this provides a runtime solution that distinguishes the emulator from the device. Change-Id: I023849d0bb405deef588d7fc272f0e303577fddf --- WebCore/platform/graphics/android/BaseLayerAndroid.cpp | 9 +++------ WebCore/platform/graphics/android/TilesManager.h | 5 +++++ 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'WebCore/platform/graphics') diff --git a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp index b632664..2f0e999 100644 --- a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp +++ b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp @@ -36,10 +36,6 @@ #include #endif // USE(ACCELERATED_COMPOSITING) -// #if TARGET_DEVICE != generic /* Not supported in emulator */ -#define HARDWARE_ACCELERATION -// #endif - #ifdef DEBUG #include @@ -72,8 +68,9 @@ BaseLayerAndroid::BaseLayerAndroid() BaseLayerAndroid::~BaseLayerAndroid() { -#ifdef HARDWARE_ACCELERATION - TilesManager::instance()->removeOperationsForBaseLayer(this); +#if USE(ACCELERATED_COMPOSITING) + if (TilesManager::hardwareAccelerationEnabled()) + TilesManager::instance()->removeOperationsForBaseLayer(this); #endif m_content.clear(); #ifdef DEBUG_COUNT diff --git a/WebCore/platform/graphics/android/TilesManager.h b/WebCore/platform/graphics/android/TilesManager.h index 113cc62..8e8c089 100644 --- a/WebCore/platform/graphics/android/TilesManager.h +++ b/WebCore/platform/graphics/android/TilesManager.h @@ -45,6 +45,11 @@ class TilesManager { public: static TilesManager* instance(); + static bool hardwareAccelerationEnabled() + { + return gInstance != 0; + } + void removeOperationsForPage(TiledPage* page) { m_pixmapsGenerationThread->removeOperationsForPage(page); -- cgit v1.1