From 27bc38ae8b65bb487173b4692828380a889130ba Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 12 Apr 2016 00:55:36 +0800 Subject: [PATCH] Fix gif delay calculation --- .../java/com/hippo/gl/glrenderer/ImageTexture.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/hippo/gl/glrenderer/ImageTexture.java b/app/src/main/java/com/hippo/gl/glrenderer/ImageTexture.java index 15522b6d4..b858488c4 100644 --- a/app/src/main/java/com/hippo/gl/glrenderer/ImageTexture.java +++ b/app/src/main/java/com/hippo/gl/glrenderer/ImageTexture.java @@ -240,7 +240,8 @@ public class ImageTexture implements Texture, Animatable { private class AnimateRunnable implements Runnable { public void doRun() { - long lastTime = SystemClock.currentThreadTimeMillis(); + long lastTime = SystemClock.elapsedRealtime(); + long lastDelay = -1L; synchronized (mImage) { // Check recycled @@ -309,9 +310,12 @@ public class ImageTexture implements Texture, Animatable { mImage.advance(); long delay = mImage.getDelay(); - long time = SystemClock.currentThreadTimeMillis(); - delay -= time - lastTime; + long time = SystemClock.elapsedRealtime(); + if (-1L != lastDelay) { + delay -= (time - lastTime) - lastDelay; + } lastTime = time; + lastDelay = delay; mFrameDirty.lazySet(true); invalidateSelf();