diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/PhotoView.java')
-rw-r--r-- | src/com/android/gallery3d/ui/PhotoView.java | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/ui/PhotoView.java b/src/com/android/gallery3d/ui/PhotoView.java index 252f3484d..77e3d99e7 100644 --- a/src/com/android/gallery3d/ui/PhotoView.java +++ b/src/com/android/gallery3d/ui/PhotoView.java @@ -225,7 +225,7 @@ public class PhotoView extends GLView { return; } ScreenNailEntry entry = mScreenNails[which]; - entry.set(screenNail); + entry.updateScreenNail(screenNail); } // -1 previous, 0 current, 1 next @@ -650,10 +650,8 @@ public class PhotoView extends GLView { ScreenNailEntry prevNail = mScreenNails[ENTRY_PREVIOUS]; ScreenNailEntry nextNail = mScreenNails[ENTRY_NEXT]; mTileView.invalidateTiles(); - if (prevNail.mScreenNail != null) prevNail.mScreenNail.recycle(); - prevNail.set(mTileView.mScreenNail); - mTileView.updateScreenNail(nextNail.mScreenNail); - nextNail.set(null); + prevNail.updateScreenNail(mTileView.releaseScreenNail()); + mTileView.updateScreenNail(nextNail.releaseScreenNail()); mModel.next(); } @@ -662,10 +660,8 @@ public class PhotoView extends GLView { ScreenNailEntry prevNail = mScreenNails[ENTRY_PREVIOUS]; ScreenNailEntry nextNail = mScreenNails[ENTRY_NEXT]; mTileView.invalidateTiles(); - if (nextNail.mScreenNail != null) nextNail.mScreenNail.recycle(); - nextNail.set(mTileView.mScreenNail); - mTileView.updateScreenNail(prevNail.mScreenNail); - nextNail.set(null); + nextNail.updateScreenNail(mTileView.releaseScreenNail()); + mTileView.updateScreenNail(prevNail.releaseScreenNail()); mModel.previous(); } @@ -715,10 +711,10 @@ public class PhotoView extends GLView { private ScreenNail mScreenNail; - public void set(ScreenNail screenNail) { + public void updateScreenNail(ScreenNail screenNail) { mEnabled = (screenNail != null); if (mScreenNail == screenNail) return; - if (mScreenNail != null) mScreenNail.recycle(); + if (mScreenNail != null) mScreenNail.pauseDraw(); mScreenNail = screenNail; if (mScreenNail != null) { mRotation = mScreenNail.getRotation(); @@ -726,6 +722,13 @@ public class PhotoView extends GLView { } } + // Release the ownership of the ScreenNail from this entry. + public ScreenNail releaseScreenNail() { + ScreenNail s = mScreenNail; + mScreenNail = null; + return s; + } + public void layoutRightEdgeAt(int x) { mVisible = x > 0; mOffsetX = x - getRotated( @@ -767,7 +770,7 @@ public class PhotoView extends GLView { public void draw(GLCanvas canvas, boolean applyFadingAnimation) { if (mScreenNail == null) return; if (!mVisible) { - mScreenNail.disableDraw(); + mScreenNail.noDraw(); return; } @@ -877,7 +880,7 @@ public class PhotoView extends GLView { mTransitionMode = TRANS_NONE; mTileView.freeTextures(); for (ScreenNailEntry entry : mScreenNails) { - entry.set(null); + entry.updateScreenNail(null); } } |