summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-09-22 16:46:37 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-22 16:46:37 -0700
commitdeea2df0a727de0b7232b1043d1b3757a90de671 (patch)
tree01394e45b201dc1630fba48c4081d21bca01df95 /core/java
parent95ee96282fc6bffe30bee54ff9affeaf5abd2611 (diff)
parent29d8997bd43b7c4ad37fc3d6f91eaafa74913c88 (diff)
Merge "Fix OpenGL errors in various places."
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/ViewRoot.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index e71b5b680553..0321be0c90e7 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -1584,11 +1584,7 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn
mAttachInfo.mRootView = null;
mAttachInfo.mSurface = null;
- if (mHwRenderer != null) {
- mHwRenderer.destroy(true);
- mHwRenderer = null;
- mAttachInfo.mHardwareAccelerated = false;
- }
+ destroyHardwareRenderer();
mSurface.release();
@@ -2542,6 +2538,8 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn
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 @@ public final class ViewRoot extends Handler implements ViewParent, View.AttachIn
}
}
+ 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;