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; |
} |