diff --git a/libcore/parser/SWFMovieDefinition.cpp b/libcore/parser/SWFMovieDefinition.cpp index f334a0f..0e92a94 100644 --- a/libcore/parser/SWFMovieDefinition.cpp +++ b/libcore/parser/SWFMovieDefinition.cpp @@ -377,7 +377,9 @@ SWFMovieDefinition::ensure_frame_loaded(size_t framenum) const std::unique_lock lock(m); // TODO: return false on timeout - _frame_reached_condition.wait(lock); + if (!_loadingCanceled) { + _frame_reached_condition.wait(lock); + } return ( framenum <= _frames_loaded.load() ); } @@ -503,6 +505,7 @@ SWFMovieDefinition::read_all_swf() // Notify any thread waiting on frame reached condition _frame_reached_condition.notify_all(); } + _loadingCanceled = true; } size_t