diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-05-03 19:49:50 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-05-03 19:50:17 +0200 |
commit | ccb89261bd51e448124c462f289d43afcd9006de (patch) | |
tree | e280db1357447204ec5f6a78c8d8c8745f727b9a /src/Gif.cpp | |
parent | 1c56c211e7c3e4a53c222f8d8ee619450e98cd27 (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.cpp | 11 |
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; |