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 7e229bc2f8c534ba41fde486c64ea8f276483d5f..8121a753b48acbb0d691b6e240a64aa9df9a0418 100644 |
| --- a/android_webview/browser/browser_view_renderer.cc |
| +++ b/android_webview/browser/browser_view_renderer.cc |
| @@ -118,7 +118,6 @@ bool BrowserViewRenderer::RequestDrawGL(bool wait_for_completion) { |
| return client_->RequestDrawGL(wait_for_completion); |
| } |
| -// This function updates the resource allocation in GlobalTileManager. |
| void BrowserViewRenderer::TrimMemory(const int level, const bool visible) { |
| DCHECK(ui_task_runner_->BelongsToCurrentThread()); |
| // Constants from Android ComponentCallbacks2. |
| @@ -145,7 +144,8 @@ void BrowserViewRenderer::TrimMemory(const int level, const bool visible) { |
| TRACE_EVENT0("android_webview", "BrowserViewRenderer::TrimMemory"); |
| - // Drop everything in hardware. |
| + // If offscreen pre-raster is disabled, drop everything in hardware. Otherwise |
| + // keep the tiles and just delete the HardwareRenderer. |
| if (level >= TRIM_MEMORY_MODERATE) { |
| shared_renderer_state_.ReleaseHardwareDrawIfNeededOnUI(); |
| return; |
| @@ -153,8 +153,8 @@ void BrowserViewRenderer::TrimMemory(const int level, const bool visible) { |
| // Just set the memory limit to 0 and drop all tiles. This will be reset to |
| // normal levels in the next DrawGL call. |
| - compositor_->SetMemoryPolicy(0u); |
| - ForceFakeCompositeSW(); |
| + if (!offscreen_pre_raster_) |
| + compositor_->SetMemoryPolicy(0u); |
| } |
| size_t BrowserViewRenderer::CalculateDesiredMemoryPolicy() { |
| @@ -337,7 +337,9 @@ void BrowserViewRenderer::ClearView() { |
| } |
| void BrowserViewRenderer::SetOffscreenPreRaster(bool enable) { |
| - // TODO(hush): anything to do when the setting is toggled? |
| + if (offscreen_pre_raster_ != enable && compositor_) |
| + compositor_->SetMemoryPolicy(CalculateDesiredMemoryPolicy()); |
|
boliu
2015/04/15 00:31:01
This ignores hardware_enabled_
hush (inactive)
2015/04/15 21:35:48
What do you mean? Do I need to do anything here? D
boliu
2015/04/15 22:27:45
policy should be 0 if hardware_enabled_ is false,
boliu
2015/04/15 22:57:04
Maybe CalcuateDesiredMemoryPolicy should take into
hush (inactive)
2015/04/16 01:13:24
I agree doing so keeps the logic sane. But setting
|
| + |
| offscreen_pre_raster_ = enable; |
| } |