Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1954)

Unified Diff: android_webview/browser/browser_view_renderer.cc

Issue 1082393003: TrimMemory strategy while offscreenPreRaster is on. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698