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

Unified Diff: android_webview/native/aw_contents.cc

Issue 408803002: aw: Release hardware onTrimMemory(MODERATE) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: auto reset Created 6 years, 5 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/native/aw_contents.cc
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index 37e05a588c0e6b0a7255f557b1981848b15de928..32cc8d1a4de9b85bde117fc05a2975615f2e386b 100644
--- a/android_webview/native/aw_contents.cc
+++ b/android_webview/native/aw_contents.cc
@@ -356,7 +356,7 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) {
: ScopedAppGLStateRestore::MODE_RESOURCE_MANAGEMENT);
ScopedAllowGL allow_gl;
- if (!shared_renderer_state_.IsHardwareAllowed()) {
+ if (shared_renderer_state_.IsInsideHardwareRelease()) {
hardware_renderer_.reset();
return;
}
@@ -843,7 +843,6 @@ void AwContents::SetIsPaused(JNIEnv* env, jobject obj, bool paused) {
void AwContents::OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- shared_renderer_state_.SetHardwareAllowed(true);
browser_view_renderer_.OnAttachedToWindow(w, h);
}
@@ -859,7 +858,12 @@ void AwContents::InitializeHardwareDrawIfNeeded() {
void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- shared_renderer_state_.SetHardwareAllowed(false);
+ ReleaseHardwareDrawIfNeeded();
+ browser_view_renderer_.OnDetachedFromWindow();
+}
+
+void AwContents::ReleaseHardwareDrawIfNeeded() {
+ InsideHardwareReleaseReset inside_reset(&shared_renderer_state_);
bool hardware_initialized = browser_view_renderer_.hardware_enabled();
if (hardware_initialized) {
@@ -871,10 +875,9 @@ void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
info.mode = AwDrawGLInfo::kModeProcess;
DrawGL(&info);
}
+ browser_view_renderer_.ReleaseHardware();
}
-
DCHECK(!hardware_renderer_);
- browser_view_renderer_.OnDetachedFromWindow();
GLViewRendererManager* manager = GLViewRendererManager::GetInstance();
@@ -1132,6 +1135,14 @@ void AwContents::TrimMemory(JNIEnv* env,
jint level,
jboolean visible) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ enum {
+ TRIM_MEMORY_MODERATE = 60,
+ };
+ if (level >= TRIM_MEMORY_MODERATE) {
+ ReleaseHardwareDrawIfNeeded();
+ return;
+ }
+
browser_view_renderer_.TrimMemory(level, visible);
}
« android_webview/browser/shared_renderer_state.h ('K') | « android_webview/native/aw_contents.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698