diff options
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(); } |