From 1b40c5bf55c24a090632765335d871c198004120 Mon Sep 17 00:00:00 2001 From: Peter Kohaut Date: Fri, 28 Oct 2016 22:34:04 +0200 Subject: BLADERUNNER: fixed memory leaks & overflows fixed few memory leaks fixed overflows prepared more logic for looping but its not yet working correctly - still figuring out original code for vqadecoder --- engines/bladerunner/vqa_player.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'engines/bladerunner/vqa_player.cpp') diff --git a/engines/bladerunner/vqa_player.cpp b/engines/bladerunner/vqa_player.cpp index f875b84cce..4fb19cf561 100644 --- a/engines/bladerunner/vqa_player.cpp +++ b/engines/bladerunner/vqa_player.cpp @@ -121,7 +121,7 @@ void VQAPlayer::updateLights(Lights *lights) { _decoder.decodeLights(lights); } -bool VQAPlayer::setLoop(int loop) { +bool VQAPlayer::setLoop(int loop, int unknown, int loopMode, void(*callback)(void*, int, int), void *callbackData) { int begin, end; if (!_decoder.getLoopBeginAndEndFrame(loop, &begin, &end)) { return false; @@ -131,6 +131,9 @@ bool VQAPlayer::setLoop(int loop) { _loopBegin = begin; _loopEnd = end; + _callbackLoopEnded = callback; + _callbackData = callbackData; + // warning("\t\t\tActive Loop: %d - %d\n", begin, end); return true; @@ -158,6 +161,9 @@ int VQAPlayer::calcNextFrame(int frame) const { if (_curLoop != -1 && frame >= _loopEnd) { frame = _loopBegin; + if (_callbackLoopEnded != nullptr) { + _callbackLoopEnded(_callbackData, 0, _curLoop); + } } else { frame++; } -- cgit v1.2.3