diff options
author | Hung-ying Tyan <tyanh@google.com> | 2012-10-25 21:17:12 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-25 21:17:14 -0700 |
commit | 5b006bf51a130b7e7a2fa486e99615f33efcb956 (patch) | |
tree | df958646c2dd0cd400fdf7c23286b5ea91644112 /src | |
parent | 6a03661ca41acfd5f4cc804338d930a024955e4e (diff) | |
parent | 9ed5587681d216168ab000ae254da4bdbdcf7a34 (diff) | |
download | android_packages_apps_Snap-5b006bf51a130b7e7a2fa486e99615f33efcb956.tar.gz android_packages_apps_Snap-5b006bf51a130b7e7a2fa486e99615f33efcb956.tar.bz2 android_packages_apps_Snap-5b006bf51a130b7e7a2fa486e99615f33efcb956.zip |
Merge "Fix tiling effect when open a photo." into gb-ub-photos-arches
Diffstat (limited to 'src')
-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(); |