summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-05-14 23:42:54 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-05-14 23:42:54 +0000
commitc0b3917d2fe361b42e457b775055cd27e907726c (patch)
treecfb52991264d531d220b7003b143fb6ddf46b285
parent77142b8ec88219bfc3d45193501e4d04dc6b179e (diff)
parent49640ea5d631a3acc67b248889e7a7da187d4a07 (diff)
downloadandroid_frameworks_ex-c0b3917d2fe361b42e457b775055cd27e907726c.tar.gz
android_frameworks_ex-c0b3917d2fe361b42e457b775055cd27e907726c.tar.bz2
android_frameworks_ex-c0b3917d2fe361b42e457b775055cd27e907726c.zip
am 49640ea5: am 55882370: Merge "Move min framerate behavior to Java"
* commit '49640ea5d631a3acc67b248889e7a7da187d4a07': Move min framerate behavior to Java
-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;