diff options
author | Chris Craik <ccraik@google.com> | 2015-05-14 15:22:06 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2015-05-14 15:22:06 -0700 |
commit | e532fb97ba883a488bb751d51732274e03a052af (patch) | |
tree | 2efbcaca828cd7358c6c79de5a42ddb29545c39f | |
parent | 3ed91a812dc34b1a8a594322aaff5d9df0467d3f (diff) | |
download | android_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.cpp | 11 | ||||
-rw-r--r-- | framesequence/src/android/support/rastermill/FrameSequenceDrawable.java | 12 |
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; |