diff options
author | Harry Jeffery <harry@exec64.co.uk> | 2015-11-13 20:34:00 +0000 |
---|---|---|
committer | Harry Jeffery <harry@exec64.co.uk> | 2015-11-13 20:35:19 +0000 |
commit | 8593ac9ab4f5cfbc48ea6579d44c991b155be124 (patch) | |
tree | be72c911afba2135cd3f00d9ab9fe6684f5204b1 /src | |
parent | 6914c912ad1358bedbcb1e0c03828dc99d9a0fb1 (diff) | |
download | imv-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.c | 4 | ||||
-rw-r--r-- | src/main.c | 2 |
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); @@ -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); } |