aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2015-11-13 20:34:00 +0000
committerHarry Jeffery <harry@exec64.co.uk>2015-11-13 20:35:19 +0000
commit8593ac9ab4f5cfbc48ea6579d44c991b155be124 (patch)
treebe72c911afba2135cd3f00d9ab9fe6684f5204b1 /src
parent6914c912ad1358bedbcb1e0c03828dc99d9a0fb1 (diff)
downloadimv-8593ac9ab4f5cfbc48ea6579d44c991b155be124.tar.gz
Fix gif playback speed for some gifs
Some gifs don't provide a frametime at all, so we have to guess one for ourselves. Fixes #4
Diffstat (limited to 'src')
-rw-r--r--src/image.c4
-rw-r--r--src/main.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/image.c b/src/image.c
index b2bf2c9..c7bac62 100644
--- a/src/image.c
+++ b/src/image.c
@@ -150,6 +150,10 @@ void imv_image_load_next_frame(struct imv_image *img)
frame_time = *(int*)FreeImage_GetTagValue(tag);
}
+ /* some gifs don't provide a frame time at all */
+ if(frame_time == 0) {
+ frame_time = 100;
+ }
img->frame_time += frame_time * 0.001;
FreeImage_UnlockPage(img->mbmp, frame, 0);
diff --git a/src/main.c b/src/main.c
index 950b0ff..67bdd33 100644
--- a/src/main.c
+++ b/src/main.c
@@ -265,6 +265,7 @@ int main(int argc, char** argv)
if(view.playing) {
double cur_time = SDL_GetTicks() / 1000.0;
double dt = cur_time - last_time;
+ last_time = SDL_GetTicks() / 1000.0;
imv_image_play(&img, dt);
}
@@ -279,7 +280,6 @@ int main(int argc, char** argv)
view.redraw = 0;
SDL_RenderPresent(renderer);
}
- last_time = SDL_GetTicks() / 1000.0;
SDL_Delay(10);
}