Fix OpenGL errors in various places.
Change-Id: I3a4e115d8fb13b6c443e65460d92987b16f2524c
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index e71b5b6..0321be0 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -1584,11 +1584,7 @@
mAttachInfo.mRootView = null;
mAttachInfo.mSurface = null;
- if (mHwRenderer != null) {
- mHwRenderer.destroy(true);
- mHwRenderer = null;
- mAttachInfo.mHardwareAccelerated = false;
- }
+ destroyHardwareRenderer();
mSurface.release();
@@ -2542,6 +2538,8 @@
if (LOCAL_LOGV) Log.v(TAG, "DIE in " + this + " of " + mSurface);
synchronized (this) {
if (mAdded && !mFirst) {
+ destroyHardwareRenderer();
+
int viewVisibility = mView.getVisibility();
boolean viewVisibilityChanged = mViewVisibility != viewVisibility;
if (mWindowAttributesChanged || viewVisibilityChanged) {
@@ -2566,6 +2564,14 @@
}
}
+ private void destroyHardwareRenderer() {
+ if (mHwRenderer != null) {
+ mHwRenderer.destroy(true);
+ mHwRenderer = null;
+ mAttachInfo.mHardwareAccelerated = false;
+ }
+ }
+
public void dispatchFinishedEvent(int seq, boolean handled) {
Message msg = obtainMessage(FINISHED_EVENT);
msg.arg1 = seq;