}
}
- private PreparePageFadeoutTexture mPrepareFadeoutTask;
-
- private void startPrepareFadeOutTexture() {
+ private void prepareFadeOutTexture() {
GLRoot root = mActivity.getGLRoot();
- mPrepareFadeoutTask = new PreparePageFadeoutTexture(
+ PreparePageFadeoutTexture task = new PreparePageFadeoutTexture(
mSlotView.getWidth(), mSlotView.getHeight() +
mActivity.getGalleryActionBar().getHeight(), mRootPane);
+ RawTexture texture = null;
root.unlockRenderThread();
try {
- root.addOnGLIdleListener(mPrepareFadeoutTask);
+ root.addOnGLIdleListener(task);
+ texture = task.get();
} finally {
root.lockRenderThread();
}
- }
- private void finishPrepareFadeOutTexture() {
- mActivity.getTransitionStore().put(KEY_FADE_TEXTURE,
- mPrepareFadeoutTask.get());
- mPrepareFadeoutTask = null;
+ if (texture != null) {
+ mActivity.getTransitionStore().put(KEY_FADE_TEXTURE, texture);
+ }
}
private void onSingleTapUp(int slotIndex) {
// Show pressed-up animation for the single-tap.
mAlbumView.setPressedIndex(slotIndex);
mAlbumView.setPressedUp();
- startPrepareFadeOutTexture();
mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_PICK_PHOTO, slotIndex, 0),
FadeTexture.DURATION);
+ prepareFadeOutTexture();
}
}
} else {
// Get into the PhotoPage.
// mAlbumView.savePositions(PositionRepository.getInstance(mActivity));
- finishPrepareFadeOutTexture();
Bundle data = new Bundle();
data.putInt(PhotoPage.KEY_INDEX_HINT, slotIndex);
data.putParcelable(PhotoPage.KEY_OPEN_ANIMATION_RECT,
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) {
}
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;
}