summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-05-14 15:22:06 -0700
committerChris Craik <ccraik@google.com>2015-05-14 15:22:06 -0700
commite532fb97ba883a488bb751d51732274e03a052af (patch)
tree2efbcaca828cd7358c6c79de5a42ddb29545c39f
parent3ed91a812dc34b1a8a594322aaff5d9df0467d3f (diff)
downloadandroid_frameworks_ex-e532fb97ba883a488bb751d51732274e03a052af.tar.gz
android_frameworks_ex-e532fb97ba883a488bb751d51732274e03a052af.tar.bz2
android_frameworks_ex-e532fb97ba883a488bb751d51732274e03a052af.zip
Move min framerate behavior to Java
bug:21000334 Change-Id: I3ffae0e4e6b69755c190e1746d80fa2f623289fa
-rw-r--r--framesequence/jni/FrameSequence_gif.cpp11
-rw-r--r--framesequence/src/android/support/rastermill/FrameSequenceDrawable.java12
2 files changed, 13 insertions, 10 deletions
diff --git a/framesequence/jni/FrameSequence_gif.cpp b/framesequence/jni/FrameSequence_gif.cpp
index 2188c53..f8d37f4 100644
--- a/framesequence/jni/FrameSequence_gif.cpp
+++ b/framesequence/jni/FrameSequence_gif.cpp
@@ -23,11 +23,6 @@
#define GIF_DEBUG 0
-// These constants are chosen to imitate common browser behavior
-// Note that 0 delay is undefined behavior in the gif standard
-static const long MIN_DELAY_MS = 20;
-static const long DEFAULT_DELAY_MS = 100;
-
static int streamReader(GifFileType* fileType, GifByteType* out, int size) {
Stream* stream = (Stream*) fileType->UserData;
return (int) stream->read(out, size);
@@ -38,11 +33,7 @@ static Color8888 gifColorToColor8888(const GifColorType& color) {
}
static long getDelayMs(GraphicsControlBlock& gcb) {
- long delayMs = gcb.DelayTime * 10;
- if (delayMs < MIN_DELAY_MS) {
- return DEFAULT_DELAY_MS;
- }
- return delayMs;
+ return gcb.DelayTime * 10;
}
static bool willBeCleared(const GraphicsControlBlock& gcb) {
diff --git a/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java b/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
index 2228b1d..5158bc0 100644
--- a/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
+++ b/framesequence/src/android/support/rastermill/FrameSequenceDrawable.java
@@ -30,6 +30,15 @@ import android.os.Process;
import android.os.SystemClock;
public class FrameSequenceDrawable extends Drawable implements Animatable, Runnable {
+ /**
+ * These constants are chosen to imitate common browser behavior for WebP/GIF.
+ * If other decoders are added, this behavior should be moved into the WebP/GIF decoders.
+ *
+ * Note that 0 delay is undefined behavior in the GIF standard.
+ */
+ private static final long MIN_DELAY_MS = 20;
+ private static final long DEFAULT_DELAY_MS = 100;
+
private static final Object sLock = new Object();
private static HandlerThread sDecodingThread;
private static Handler sDecodingThreadHandler;
@@ -160,6 +169,9 @@ public class FrameSequenceDrawable extends Drawable implements Animatable, Runna
}
int lastFrame = nextFrame - 2;
long invalidateTimeMs = mFrameSequenceState.getFrame(nextFrame, bitmap, lastFrame);
+ if (invalidateTimeMs < MIN_DELAY_MS) {
+ invalidateTimeMs = DEFAULT_DELAY_MS;
+ }
boolean schedule = false;
Bitmap bitmapToRelease = null;