diff options
| author | Rosemary Witchaven <32779090+in1tiate@users.noreply.github.com> | 2021-08-24 19:37:13 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-24 19:37:13 -0500 |
| commit | 8b82f5d592a9f76b1edbaa1efdf09366e41b266c (patch) | |
| tree | 6f567ec72a1e152cfff25acf2b08a1656177ca41 /src/aolayer.cpp | |
| parent | 9d2e00ee11900c7a599b4bc6652a28445987a142 (diff) | |
Fix an infinite hang when loading the pair character, fix strange undesired behavior of the pair character (#586)
* sanity check if the frame we're waiting on isnt nonexistent
* consolidate conditionals
Diffstat (limited to 'src/aolayer.cpp')
| -rw-r--r-- | src/aolayer.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/aolayer.cpp b/src/aolayer.cpp index eb7853ca..30ff652b 100644 --- a/src/aolayer.cpp +++ b/src/aolayer.cpp @@ -304,11 +304,12 @@ void AOLayer::start_playback(QString p_image) m_reader.setFileName(p_image); if (m_reader.loopCount() == 0) play_once = true; - if (!continuous) - frame = 0; last_max_frames = max_frames; max_frames = m_reader.imageCount(); - if (((continuous) && (max_frames != last_max_frames)) || max_frames == 0) { + if (!continuous + || ((continuous) && (max_frames != last_max_frames)) + || max_frames == 0 + || frame >= max_frames) { frame = 0; continuous = false; } @@ -519,11 +520,6 @@ void CharLayer::movie_ticker() void AOLayer::movie_ticker() { ++frame; - mutex.lock(); - while (frame >= movie_frames.size() && frame < max_frames) { // oops! our frame isn't ready yet - frameAdded.wait(&mutex); - } - mutex.unlock(); if (frame >= max_frames) { if (play_once) { if (cull_image) @@ -536,6 +532,11 @@ void AOLayer::movie_ticker() else frame = 0; } + mutex.lock(); + while (frame >= movie_frames.size() && frame < max_frames) { // oops! our frame isn't ready yet + frameAdded.wait(&mutex); + } + mutex.unlock(); #ifdef DEBUG_MOVIE qDebug() << "[AOLayer::movie_ticker] Frame:" << frame << "Delay:" << movie_delays[frame] << "Actual time taken from last frame:" << actual_time.restart(); |
