aboutsummaryrefslogtreecommitdiff
path: root/src/loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader.c')
-rw-r--r--src/loader.c13
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);