diff options
author | Hung-ying Tyan <tyanh@google.com> | 2012-10-25 21:19:11 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-25 21:19:11 -0700 |
commit | 43c7fd47754840e254463aaddafeef9e55229dda (patch) | |
tree | 1ca368be7f27b509dd27b9dcc9a1a89bde2f2804 | |
parent | 0765803461d2527171d2d50e001ded0bb9e410c7 (diff) | |
parent | 5b006bf51a130b7e7a2fa486e99615f33efcb956 (diff) | |
download | android_packages_apps_Snap-43c7fd47754840e254463aaddafeef9e55229dda.tar.gz android_packages_apps_Snap-43c7fd47754840e254463aaddafeef9e55229dda.tar.bz2 android_packages_apps_Snap-43c7fd47754840e254463aaddafeef9e55229dda.zip |
am 635aab56: Merge "Fix tiling effect when open a photo." into gb-ub-photos-arches
* commit '635aab5631e25488610ff5546c51ea2895dda2f0':
Fix tiling effect when open a photo.
-rw-r--r-- | src/com/android/gallery3d/ui/TiledScreenNail.java | 4 | ||||
-rw-r--r-- | src/com/android/gallery3d/ui/TiledTexture.java | 11 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/com/android/gallery3d/ui/TiledScreenNail.java b/src/com/android/gallery3d/ui/TiledScreenNail.java index d2b34e3bf..74665f584 100644 --- a/src/com/android/gallery3d/ui/TiledScreenNail.java +++ b/src/com/android/gallery3d/ui/TiledScreenNail.java @@ -189,6 +189,10 @@ public class TiledScreenNail implements ScreenNail { } public boolean isAnimating() { + // The TiledTexture may not be uploaded completely yet. + // In that case, we count it as animating state and we will draw + // the placeholder in TileImageView. + if (mTexture == null || !mTexture.isReady()) return true; if (mAnimationStartTime < 0) return false; if (AnimationTime.get() - mAnimationStartTime >= DURATION) { mAnimationStartTime = ANIMATION_DONE; diff --git a/src/com/android/gallery3d/ui/TiledTexture.java b/src/com/android/gallery3d/ui/TiledTexture.java index 22afe310f..8e26221bc 100644 --- a/src/com/android/gallery3d/ui/TiledTexture.java +++ b/src/com/android/gallery3d/ui/TiledTexture.java @@ -24,6 +24,7 @@ import android.graphics.Paint; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; +import android.os.SystemClock; import com.android.gallery3d.ui.GLRoot.OnGLIdleListener; @@ -40,6 +41,10 @@ public class TiledTexture implements Texture { private static final int TILE_SIZE = CONTENT_SIZE + 2 * BORDER_SIZE; private static final int INIT_CAPACITY = 8; + // We are targeting at 60fps, so we have 16ms for each frame. + // In this 16ms, we use about 4~8 ms to upload tiles. + private static final long UPLOAD_TILE_LIMIT = 4; // ms + private static Tile sFreeTileHead = null; private static final Object sFreeTileLock = new Object(); @@ -79,17 +84,19 @@ public class TiledTexture implements Texture { mGlRoot.addOnGLIdleListener(this); } - @Override public boolean onGLIdle(GLCanvas canvas, boolean renderRequested) { ArrayDeque<TiledTexture> deque = mTextures; synchronized (this) { - if (!deque.isEmpty()) { + long now = SystemClock.uptimeMillis(); + long dueTime = now + UPLOAD_TILE_LIMIT; + while(now < dueTime && !deque.isEmpty()) { TiledTexture t = deque.peekFirst(); if (t.uploadNextTile(canvas)) { deque.removeFirst(); mGlRoot.requestRender(); } + now = SystemClock.uptimeMillis(); } mIsQueued = !mTextures.isEmpty(); |