aboutsummaryrefslogtreecommitdiff
path: root/src/Gif.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-05-03 19:49:50 +0200
committerdec05eba <dec05eba@protonmail.com>2018-05-03 19:50:17 +0200
commitccb89261bd51e448124c462f289d43afcd9006de (patch)
treee280db1357447204ec5f6a78c8d8c8745f727b9a /src/Gif.cpp
parent1c56c211e7c3e4a53c222f8d8ee619450e98cd27 (diff)
Fix freeze when gif has unlimited frame delay. If unlimited, set to 15
Diffstat (limited to 'src/Gif.cpp')
-rw-r--r--src/Gif.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Gif.cpp b/src/Gif.cpp
index a9e7850..4d1295c 100644
--- a/src/Gif.cpp
+++ b/src/Gif.cpp
@@ -147,16 +147,19 @@ namespace dchat
u32 startFrame = currentFrame;
while(true)
{
- int i = currentFrame % gif.frame_count;
+ u32 i = currentFrame % gif.frame_count;
gif_result code = gif_decode_frame(&gif, i);
if(code != GIF_OK)
printf("Warning: gif_decode_frame: %s\n", gifResultToString(code));
gif_frame &frame = gif.frames[i];
// frame_delay is in centiseconds
- double frameDelay = (double)frame.frame_delay;
- if(timeElapsedCs >= frameDelay)
- timeElapsedCs -= frameDelay;
+ unsigned int frameDelay = frame.frame_delay;
+ if(frameDelay == 0)
+ frameDelay = 7;
+ double fFrameDelay = (double)frameDelay;
+ if(timeElapsedCs >= fFrameDelay)
+ timeElapsedCs -= fFrameDelay;
else
break;