Index: android_webview/browser/render_thread_manager.cc |
diff --git a/android_webview/browser/render_thread_manager.cc b/android_webview/browser/render_thread_manager.cc |
index 1bb44aa75c313e4fedabc107a41e9beb2e01e4dc..4a11df24e1cf84f9bf7a54c64d9babddc8dc8c76 100644 |
--- a/android_webview/browser/render_thread_manager.cc |
+++ b/android_webview/browser/render_thread_manager.cc |
@@ -287,17 +287,19 @@ void RenderThreadManager::DrawGL(AwDrawGLInfo* draw_info) { |
// Set the correct FBO before kModeDraw. The GL commands run in kModeDraw |
// require a correctly bound FBO. The FBO remains until the next kModeDraw. |
// So kModeProcess between kModeDraws has correctly bound FBO, too. |
- if (draw_info->mode == AwDrawGLInfo::kModeDraw && !hardware_renderer_ && |
- !IsInsideHardwareRelease() && HasFrameForHardwareRendererOnRT()) { |
- hardware_renderer_.reset(new HardwareRenderer(this)); |
- hardware_renderer_->CommitFrame(); |
- } |
if (hardware_renderer_) { |
hardware_renderer_->SetBackingFrameBufferObject( |
state_restore.framebuffer_binding_ext()); |
} |
ScopedAllowGL allow_gl; |
+ if (!hardware_renderer_ && draw_info->mode == AwDrawGLInfo::kModeDraw && |
+ !IsInsideHardwareRelease() && HasFrameForHardwareRendererOnRT()) { |
+ hardware_renderer_.reset(new HardwareRenderer(this)); |
+ hardware_renderer_->SetBackingFrameBufferObject( |
+ state_restore.framebuffer_binding_ext()); |
+ hardware_renderer_->CommitFrame(); |
+ } |
if (draw_info->mode == AwDrawGLInfo::kModeProcessNoContext) { |
LOG(ERROR) << "Received unexpected kModeProcessNoContext"; |