diff options
Diffstat (limited to 'src/loader.c')
-rw-r--r-- | src/loader.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/loader.c b/src/loader.c index 4f8550c..cbebf2c 100644 --- a/src/loader.c +++ b/src/loader.c @@ -137,9 +137,11 @@ void imv_loader_time_passed(struct imv_loader *ldr, double dt) pthread_mutex_lock(&ldr->lock); if(ldr->num_frames > 1) { ldr->frame_time -= dt; - if(ldr->frame_time < 0) { + if(ldr->frame_time < 0.0) { get_frame = 1; } + } else { + ldr->frame_time = 0.0; } pthread_mutex_unlock(&ldr->lock); @@ -148,6 +150,11 @@ void imv_loader_time_passed(struct imv_loader *ldr, double dt) } } +double imv_loader_time_left(struct imv_loader *ldr) +{ + return ldr->frame_time; +} + static void *bg_new_img(void *data) { /* so we can poll for it */ @@ -187,7 +194,7 @@ static void *bg_new_img(void *data) FIMULTIBITMAP *mbmp = NULL; FIBITMAP *bmp = NULL; int width, height; - int raw_frame_time = 100; /* default to 100 */ + int raw_frame_time = 0; if(fmt == FIF_GIF) { if(from_stdin) { @@ -219,6 +226,8 @@ static void *bg_new_img(void *data) FreeImage_GetMetadata(FIMD_ANIMATION, frame, "FrameTime", &tag); if(FreeImage_GetTagValue(tag)) { raw_frame_time = *(int*)FreeImage_GetTagValue(tag); + } else { + raw_frame_time = 100; /* default value for gifs */ } FreeImage_UnlockPage(mbmp, frame, 0); |