Chromium Code Reviews| 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..fdd2a4e4478137d7b5c82d2f23ebb8a9c589714b 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; |
| @@ -314,17 +320,9 @@ void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) { |
| DeferredGpuCommandService::GetInstance()->PerformIdleWork(false); |
| } |
| -void SharedRendererState::ReleaseHardwareDrawIfNeededOnUI() { |
| - ReleaseCompositorResourcesIfNeededOnUI(true); |
| -} |
| - |
| -void SharedRendererState::DeleteHardwareRendererOnUI() { |
| - ReleaseCompositorResourcesIfNeededOnUI(false); |
| -} |
| - |
| -void SharedRendererState::ReleaseCompositorResourcesIfNeededOnUI( |
| - bool release_hardware_draw) { |
| +void SharedRendererState::ReleaseCompositorResourcesIfNeededOnUI() { |
|
boliu
2016/03/23 20:42:32
DeleteHardwareRendererOnUIThread actually sounds b
Tobias Sargeant
2016/03/24 16:53:05
Done.
|
| DCHECK(ui_loop_->BelongsToCurrentThread()); |
| + |
| InsideHardwareReleaseReset auto_inside_hardware_release_reset(this); |
| browser_view_renderer_->DetachFunctorFromView(); |
| @@ -340,9 +338,6 @@ void SharedRendererState::ReleaseCompositorResourcesIfNeededOnUI( |
| info.mode = AwDrawGLInfo::kModeProcess; |
| DrawGL(&info); |
| } |
| - |
| - if (release_hardware_draw) |
| - browser_view_renderer_->ReleaseHardware(); |
| } |
| GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); |
| @@ -366,6 +361,10 @@ bool SharedRendererState::HasFrameOnUI() const { |
| return hardware_renderer_has_frame_ || child_frame_.get(); |
| } |
| +void SharedRendererState::TrimMemoryOnUI(int level) { |
|
boliu
2016/03/23 20:42:32
The level check got dropped?
Tobias Sargeant
2016/03/24 16:53:05
Done. Deciding what to trim and when moved to AwCo
|
| + ReleaseCompositorResourcesIfNeededOnUI(); |
| +} |
| + |
| void SharedRendererState::InitializeHardwareDrawIfNeededOnUI() { |
| DCHECK(ui_loop_->BelongsToCurrentThread()); |
| GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); |