Index: android_webview/browser/shared_renderer_state.cc |
diff --git a/android_webview/browser/shared_renderer_state.cc b/android_webview/browser/shared_renderer_state.cc |
index 1d9874ee2d6c4962b57588e552183b1b29255d76..8599d6fda467bbc742afb4a630100492cc442be9 100644 |
--- a/android_webview/browser/shared_renderer_state.cc |
+++ b/android_webview/browser/shared_renderer_state.cc |
@@ -285,6 +285,15 @@ void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) { |
} |
void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
+ ReleaseCompositorResourcesIfNeededOnUI(false); |
+} |
+ |
+void SharedRendererState::DeleteHardwareRendererOnUI() { |
+ ReleaseCompositorResourcesIfNeededOnUI(true); |
+} |
+ |
+void SharedRendererState::ReleaseCompositorResourcesIfNeededOnUI( |
+ bool keep_child_compositor_tiles) { |
boliu
2015/04/16 01:58:40
release_hardware_draw?
This class doesn't know an
hush (inactive)
2015/04/16 04:06:25
Done.
|
DCHECK(ui_loop_->BelongsToCurrentThread()); |
InsideHardwareReleaseReset auto_inside_hardware_release_reset(this); |
@@ -300,7 +309,8 @@ void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
DrawGL(&info); |
} |
- browser_view_renderer_->ReleaseHardware(); |
+ if (!keep_child_compositor_tiles) |
+ browser_view_renderer_->ReleaseHardware(); |
} |
GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); |
@@ -313,7 +323,7 @@ void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
} |
} |
- if (hardware_initialized) { |
+ if (hardware_initialized && !keep_child_compositor_tiles) { |
boliu
2015/04/16 01:58:40
Can't skip this (in theory), some other thread can
hush (inactive)
2015/04/16 04:06:25
Removed the additional condition.
What's the situa
|
// Flush any invoke functors that's caused by ReleaseHardware. |
browser_view_renderer_->RequestDrawGL(true); |
} |