summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2012-08-23 14:35:18 -0700
committerBobby Georgescu <georgescu@google.com>2012-08-23 14:40:11 -0700
commit4e88a8c2a2addfadb05ca9699f505a3f348f3692 (patch)
treed97b35fa5ff90e833f3b806b29afa589d9a68b1c /src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java
parentc760a5c49774c90b97ae818c6ee4e14825361b4b (diff)
downloadandroid_packages_apps_Gallery2-4e88a8c2a2addfadb05ca9699f505a3f348f3692.tar.gz
android_packages_apps_Gallery2-4e88a8c2a2addfadb05ca9699f505a3f348f3692.tar.bz2
android_packages_apps_Gallery2-4e88a8c2a2addfadb05ca9699f505a3f348f3692.zip
Fix NPE, ANRs in Gallery
Bug: 7041482 Bug: 7041769 Change-Id: I06596bd9a058a8fe51c19108a0891c458950f22b
Diffstat (limited to 'src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java')
-rw-r--r--src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java b/src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java
index 250d17a2b..f2b306ef5 100644
--- a/src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java
+++ b/src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java
@@ -8,6 +8,7 @@ public class PreparePageFadeoutTexture implements OnGLIdleListener {
private static final long TIMEOUT = FadeTexture.DURATION;
private RawTexture mTexture;
private ConditionVariable mResultReady = new ConditionVariable(false);
+ private boolean mCancelled = false;
private GLView mRootPane;
public PreparePageFadeoutTexture(int w, int h, GLView rootPane) {
@@ -16,18 +17,25 @@ public class PreparePageFadeoutTexture implements OnGLIdleListener {
}
public synchronized RawTexture get() {
- if (mResultReady.block(TIMEOUT)) {
+ if (mCancelled) {
+ return null;
+ } else if (mResultReady.block(TIMEOUT)) {
return mTexture;
} else {
+ mCancelled = true;
return null;
}
}
@Override
public boolean onGLIdle(GLCanvas canvas, boolean renderRequested) {
- canvas.beginRenderTarget(mTexture);
- mRootPane.render(canvas);
- canvas.endRenderTarget();
+ if(!mCancelled) {
+ canvas.beginRenderTarget(mTexture);
+ mRootPane.render(canvas);
+ canvas.endRenderTarget();
+ } else {
+ mTexture = null;
+ }
mResultReady.open();
return false;
}