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 488f915b65209451ffa264e536f79cb7d0c0c31f..7442bd6706a633ea8d2b7557e0691ae5899470e4 100644 |
--- a/android_webview/browser/shared_renderer_state.cc |
+++ b/android_webview/browser/shared_renderer_state.cc |
@@ -87,16 +87,14 @@ base::LazyInstance<internal::RequestDrawGLTracker> g_request_draw_gl_tracker = |
} |
SharedRendererState::SharedRendererState( |
- const scoped_refptr<base::SingleThreadTaskRunner>& ui_loop, |
- BrowserViewRenderer* browser_view_renderer) |
+ const scoped_refptr<base::SingleThreadTaskRunner>& ui_loop) |
: ui_loop_(ui_loop), |
- browser_view_renderer_(browser_view_renderer), |
+ browser_view_renderer_(nullptr), |
renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()), |
hardware_renderer_has_frame_(false), |
inside_hardware_release_(false), |
weak_factory_on_ui_thread_(this) { |
DCHECK(ui_loop_->BelongsToCurrentThread()); |
- DCHECK(browser_view_renderer_); |
ui_thread_weak_ptr_ = weak_factory_on_ui_thread_.GetWeakPtr(); |
ResetRequestDrawGLCallback(); |
} |
@@ -142,6 +140,7 @@ void SharedRendererState::ResetRequestDrawGLCallback() { |
void SharedRendererState::ClientRequestDrawGLOnUI() { |
DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ DCHECK(browser_view_renderer_); |
ResetRequestDrawGLCallback(); |
g_request_draw_gl_tracker.Get().SetQueuedFunctorOnUi(this); |
if (!browser_view_renderer_->RequestDrawGL(false)) { |
@@ -152,9 +151,16 @@ void SharedRendererState::ClientRequestDrawGLOnUI() { |
void SharedRendererState::UpdateParentDrawConstraintsOnUI() { |
DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ DCHECK(browser_view_renderer_); |
browser_view_renderer_->UpdateParentDrawConstraints(); |
} |
+void SharedRendererState::SetBrowserViewRendererOnUI( |
+ BrowserViewRenderer* browser_view_renderer) { |
+ DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ browser_view_renderer_ = browser_view_renderer; |
+} |
+ |
void SharedRendererState::SetScrollOffsetOnUI(gfx::Vector2d scroll_offset) { |
base::AutoLock lock(lock_); |
scroll_offset_ = scroll_offset; |
@@ -325,6 +331,7 @@ void SharedRendererState::DeleteHardwareRendererOnUI() { |
void SharedRendererState::ReleaseCompositorResourcesIfNeededOnUI( |
bool release_hardware_draw) { |
DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ DCHECK(browser_view_renderer_); |
InsideHardwareReleaseReset auto_inside_hardware_release_reset(this); |
browser_view_renderer_->DetachFunctorFromView(); |