diff options
author | Romain Guy <romainguy@google.com> | 2010-12-07 20:15:29 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-07 20:15:29 -0800 |
commit | dde4c353851fd107ebe122a4ad9328e007c169b9 (patch) | |
tree | 8efded1af7e86586a27044ada93baf29047845b5 /core | |
parent | d00e116293589fb258f8d153d65ffdea38e0b5ec (diff) | |
parent | 67f27952c1bcb2230beef9b5ca0bf42edad436a9 (diff) | |
download | frameworks_base-dde4c353851fd107ebe122a4ad9328e007c169b9.zip frameworks_base-dde4c353851fd107ebe122a4ad9328e007c169b9.tar.gz frameworks_base-dde4c353851fd107ebe122a4ad9328e007c169b9.tar.bz2 |
Merge "Correctly release the OpenGL Canvas on EGL error."
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 24a9f87..0e294f7 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -50,7 +50,7 @@ public abstract class HardwareRenderer { private boolean mRequested = true; /** - * Indicates that the current process cannot use hardware rendering. + * Invoke this method to disable hardware rendering in the current process. * * @hide */ @@ -207,7 +207,7 @@ public abstract class HardwareRenderer { EGLSurface mEglSurface; GL mGl; - GLES20Canvas mCanvas; + HardwareCanvas mCanvas; final int mGlVersion; final boolean mTranslucent; @@ -279,12 +279,15 @@ public abstract class HardwareRenderer { if (error != EGL11.EGL_CONTEXT_LOST) { // we'll try again if it was context lost setRequested(false); + } else { + Log.w(LOG_TAG, "Mountain View, we've had a problem here. " + + "Switching back to software rendering."); } Log.w(LOG_TAG, "EGL error: " + getEGLErrorString(error)); } } } - + @Override boolean initialize(SurfaceHolder holder) { if (isRequested() && !isEnabled()) { @@ -654,6 +657,14 @@ public abstract class HardwareRenderer { } @Override + void destroy(boolean full) { + super.destroy(full); + if (full && mGlCanvas != null) { + mGlCanvas = null; + } + } + + @Override DisplayList createDisplayList() { return new GLES20DisplayList(); } |