Index: android_webview/browser/in_process_view_renderer.cc |
diff --git a/android_webview/browser/in_process_view_renderer.cc b/android_webview/browser/in_process_view_renderer.cc |
index 51f365ae50723c8b6424986eb5b3fcc458f6d001..f629bee6d61406f79b04bd11622f12ab3fdb6ace 100644 |
--- a/android_webview/browser/in_process_view_renderer.cc |
+++ b/android_webview/browser/in_process_view_renderer.cc |
@@ -316,6 +316,28 @@ bool InProcessViewRenderer::RequestProcessGL() { |
return client_->RequestDrawGL(NULL); |
} |
+void InProcessViewRenderer::OnMemoryPressure( |
+ base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
+ // Nothing to release. |
+ if (!attached_to_window_ || !compositor_ || !hardware_initialized_) |
+ return; |
+ |
+ // Do not release resources on view we expect to get DrawGL soon. |
+ if (view_visible_ && window_visible_) |
+ return; |
+ |
+ TRACE_EVENT_INSTANT0( |
+ "android_webview", "OnMemoryPressure", TRACE_EVENT_SCOPE_THREAD); |
+ ScopedAppGLStateRestore state_restore(ScopedAppGLStateRestore::MODE_ON_TRIM); |
+ gpu::InProcessCommandBuffer::ProcessGpuWorkOnCurrentThread(); |
+ ScopedAllowGL allow_gl; |
joth
2013/10/01 11:10:46
GL not valid if this is a 'fake' memory pressure?
|
+ |
+ content::SynchronousCompositorMemoryPolicy policy; |
+ policy.bytes_limit = 0; |
+ policy.num_resources_limit = 0; |
+ compositor_->SetMemoryPolicy(policy); |
joth
2013/10/01 11:10:46
comment this will get set back upward on the next
|
+} |
+ |
void InProcessViewRenderer::UpdateCachedGlobalVisibleRect() { |
client_->UpdateGlobalVisibleRect(); |
} |