Index: android_webview/browser/browser_view_renderer.cc |
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc |
index fd00b6be6b701a1c054c305d7ccadf9ae3f1890b..ef039bf7ec396775f699682057931f2aaada0b11 100644 |
--- a/android_webview/browser/browser_view_renderer.cc |
+++ b/android_webview/browser/browser_view_renderer.cc |
@@ -240,6 +240,7 @@ bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) { |
if (!hardware_enabled_) { |
hardware_enabled_ = compositor_->InitializeHwDraw(); |
if (hardware_enabled_) { |
+ tile_manager_key_ = GlobalTileManager::GetInstance()->PushBack(this); |
gpu::GLInProcessContext* share_context = compositor_->GetShareContext(); |
DCHECK(share_context); |
shared_renderer_state_->SetSharedContext(share_context); |
@@ -404,27 +405,27 @@ void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { |
attached_to_window_ = true; |
width_ = width; |
height_ = height; |
- tile_manager_key_ = GlobalTileManager::GetInstance()->PushBack(this); |
} |
void BrowserViewRenderer::OnDetachedFromWindow() { |
TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); |
attached_to_window_ = false; |
- if (hardware_enabled_) { |
- ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput()); |
- ReturnResourceFromParent(); |
- DCHECK(shared_renderer_state_->ReturnedResourcesEmpty()); |
- |
- compositor_->ReleaseHwDraw(); |
- shared_renderer_state_->SetSharedContext(NULL); |
- hardware_enabled_ = false; |
- } |
+ DCHECK(!hardware_enabled_); |
+} |
+ |
+void BrowserViewRenderer::ReleaseHardware() { |
+ DCHECK(hardware_enabled_); |
+ ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput()); |
+ ReturnResourceFromParent(); |
+ DCHECK(shared_renderer_state_->ReturnedResourcesEmpty()); |
+ |
+ compositor_->ReleaseHwDraw(); |
+ shared_renderer_state_->SetSharedContext(NULL); |
+ hardware_enabled_ = false; |
+ |
SynchronousCompositorMemoryPolicy zero_policy; |
RequestMemoryPolicy(zero_policy); |
GlobalTileManager::GetInstance()->Remove(tile_manager_key_); |
- // The hardware resources are released in the destructor of hardware renderer, |
- // so we don't need to do it here. |
- // See AwContents::ReleaseHardwareDrawOnRenderThread(JNIEnv*, jobject). |
} |
bool BrowserViewRenderer::IsVisible() const { |