diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-10-31 18:11:35 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2018-10-31 18:11:36 +0100 |
commit | 07c9e3d393db4b4d59262f7d9898be169ac2f927 (patch) | |
tree | 2623fbfd1c1614c2de575437cb89a787e93d8c1d /src/Gif.cpp | |
parent | a5e2adedf38f84a8be5e8d844e02991d3bbfecca (diff) |
Make generic
Diffstat (limited to 'src/Gif.cpp')
-rw-r--r-- | src/Gif.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/Gif.cpp b/src/Gif.cpp index 2391872..983030c 100644 --- a/src/Gif.cpp +++ b/src/Gif.cpp @@ -81,7 +81,8 @@ namespace dchat Gif::Gif(StringView _fileContent) : fileContent(move(_fileContent)), currentFrame(0), - timeElapsedCs(0.0) + timeElapsedCs(0.0), + created(false) { try { @@ -120,9 +121,6 @@ namespace dchat } } while(code != GIF_OK); - - if(!createTexture(gif.width, gif.height)) - throw GifLoadException("Failed to create texture for gif"); } Gif::~Gif() @@ -138,6 +136,13 @@ namespace dchat void Gif::update() { + if(!created) + { + created = true; + if(!createTexture(gif.width, gif.height)) + throw GifLoadException("Failed to create texture for gif"); + } + double timeElapsedMilli = (double)frameTimer.getElapsedTimeMillis(); // If gif is not redrawn for a while, then we reset timer (gif is paused). This happens when gif is not visible and then appears visible // (because it's visible in window). The reason this is done is to prevent too much time between rendering gif frames, as processing a gif |