diff options
author | Bobby Georgescu <georgescu@google.com> | 2012-08-23 14:35:18 -0700 |
---|---|---|
committer | Bobby Georgescu <georgescu@google.com> | 2012-08-23 14:40:11 -0700 |
commit | 4e88a8c2a2addfadb05ca9699f505a3f348f3692 (patch) | |
tree | d97b35fa5ff90e833f3b806b29afa589d9a68b1c /src/com/android/gallery3d/ui/PreparePageFadeoutTexture.java | |
parent | c760a5c49774c90b97ae818c6ee4e14825361b4b (diff) | |
download | android_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.java | 16 |
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; } |