Chromium Code Reviews| Index: android_webview/browser/browser_view_renderer.cc |
| diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc |
| index 8f21b165d17d91346f9c07a9730ef1caccb8c64f..579fc117cbfd144791b41b39304c81e302d39c2d 100644 |
| --- a/android_webview/browser/browser_view_renderer.cc |
| +++ b/android_webview/browser/browser_view_renderer.cc |
| @@ -145,6 +145,9 @@ void BrowserViewRenderer::TrimMemory(const int level, const bool visible) { |
| TRIM_MEMORY_BACKGROUND = 40, |
| }; |
| + if (!compositor_ || !hardware_enabled_) |
| + return; |
| + |
| // Not urgent enough. TRIM_MEMORY_UI_HIDDEN is treated specially because |
| // it does not indicate memory pressure, but merely that the app is |
| // backgrounded. |
| @@ -192,6 +195,7 @@ BrowserViewRenderer::CalculateDesiredMemoryPolicy() { |
| // well as the tile resource allocation in GlobalTileManager. |
| void BrowserViewRenderer::RequestMemoryPolicy( |
| SynchronousCompositorMemoryPolicy& new_policy) { |
| + DCHECK(compositor_); |
| GlobalTileManager* manager = GlobalTileManager::GetInstance(); |
| // The following line will call BrowserViewRenderer::SetMemoryPolicy(). |
| @@ -317,6 +321,7 @@ void BrowserViewRenderer::UpdateParentDrawConstraints() { |
| void BrowserViewRenderer::ReturnUnusedResource( |
| scoped_ptr<cc::CompositorFrame> frame) { |
| + DCHECK(compositor_); |
| if (!frame.get()) |
| return; |
| @@ -328,6 +333,7 @@ void BrowserViewRenderer::ReturnUnusedResource( |
| } |
| void BrowserViewRenderer::ReturnResourceFromParent() { |
| + DCHECK(compositor_); |
| cc::CompositorFrameAck frame_ack; |
| shared_renderer_state_->SwapReturnedResources(&frame_ack.resources); |
| if (!frame_ack.resources.empty()) { |
| @@ -456,6 +462,7 @@ void BrowserViewRenderer::OnDetachedFromWindow() { |
| } |
| void BrowserViewRenderer::ReleaseHardware() { |
| + DCHECK(compositor_); |
| DCHECK(hardware_enabled_); |
| ReturnUnusedResource(shared_renderer_state_->PassCompositorFrame()); |
| ReturnResourceFromParent(); |
| @@ -491,9 +498,10 @@ void BrowserViewRenderer::DidDestroyCompositor( |
| content::SynchronousCompositor* compositor) { |
| TRACE_EVENT0("android_webview", "BrowserViewRenderer::DidDestroyCompositor"); |
| DCHECK(compositor_); |
| - compositor_ = NULL; |
| SynchronousCompositorMemoryPolicy zero_policy; |
| - DCHECK(memory_policy_ == zero_policy); |
| + RequestMemoryPolicy(zero_policy); |
| + compositor_ = NULL; |
| + hardware_enabled_ = false; |
|
boliu
2014/10/17 22:59:26
oh god that's so freaking wrong
hush (inactive)
2014/10/17 23:04:15
what do you mean? I thought what you did is replac
boliu
2014/10/17 23:06:01
CHECK was to see it actually happens, not the fix.
|
| } |
| void BrowserViewRenderer::SetContinuousInvalidate(bool invalidate) { |