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..7fecf87a2c16b24316679a4a98d472f6539c1890 100644 |
--- a/android_webview/browser/shared_renderer_state.cc |
+++ b/android_webview/browser/shared_renderer_state.cc |
@@ -287,6 +287,7 @@ void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) { |
void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
DCHECK(ui_loop_->BelongsToCurrentThread()); |
InsideHardwareReleaseReset auto_inside_hardware_release_reset(this); |
+ bool offscreen_pre_raster = browser_view_renderer_->offscreen_pre_raster(); |
browser_view_renderer_->DetachFunctorFromView(); |
bool hardware_initialized = browser_view_renderer_->hardware_enabled(); |
@@ -300,7 +301,8 @@ void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
DrawGL(&info); |
} |
- browser_view_renderer_->ReleaseHardware(); |
+ if (!offscreen_pre_raster) |
+ browser_view_renderer_->ReleaseHardware(); |
boliu
2015/04/15 00:31:01
Then this is also skipping ReleaseHardware in deta
hush (inactive)
2015/04/15 21:35:48
Yeah. That is a problem. And it actually caused so
|
} |
GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); |
@@ -313,7 +315,7 @@ void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
} |
} |
- if (hardware_initialized) { |
+ if (hardware_initialized && !offscreen_pre_raster) { |
// Flush any invoke functors that's caused by ReleaseHardware. |
browser_view_renderer_->RequestDrawGL(true); |
} |