summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2012-10-25 21:17:12 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-25 21:17:14 -0700
commit5b006bf51a130b7e7a2fa486e99615f33efcb956 (patch)
treedf958646c2dd0cd400fdf7c23286b5ea91644112 /src
parent6a03661ca41acfd5f4cc804338d930a024955e4e (diff)
parent9ed5587681d216168ab000ae254da4bdbdcf7a34 (diff)
downloadandroid_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.java4
-rw-r--r--src/com/android/gallery3d/ui/TiledTexture.java11
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();