aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/vqa_decoder.cpp11
-rw-r--r--engines/bladerunner/vqa_decoder.h6
2 files changed, 13 insertions, 4 deletions
diff --git a/engines/bladerunner/vqa_decoder.cpp b/engines/bladerunner/vqa_decoder.cpp
index ba30e73ee4..f2aee5dd33 100644
--- a/engines/bladerunner/vqa_decoder.cpp
+++ b/engines/bladerunner/vqa_decoder.cpp
@@ -118,6 +118,9 @@ const char *strTag(uint32 tag)
VQADecoder::VQADecoder()
: _s(nullptr),
+ _frameInfo(nullptr),
+ _videoTrack(nullptr),
+ _audioTrack(nullptr),
_maxVIEWChunkSize(0),
_maxZBUFChunkSize(0),
_maxAESCChunkSize(0)
@@ -125,6 +128,9 @@ VQADecoder::VQADecoder()
}
VQADecoder::~VQADecoder() {
+ delete _audioTrack;
+ delete _videoTrack;
+ delete[] _frameInfo;
}
bool VQADecoder::loadStream(Common::SeekableReadStream *s) {
@@ -172,10 +178,7 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *s) {
} while (chd.id != kFINF);
_videoTrack = new VQAVideoTrack(this);
- // addTrack(_videoTrack);
-
_audioTrack = new VQAAudioTrack(this);
- // addTrack(_audioTrack);
/*
for (int i = 0; i != _loopInfo.loopCount; ++i) {
@@ -559,6 +562,8 @@ VQADecoder::VQAVideoTrack::~VQAVideoTrack() {
delete[] _zbufChunk;
delete[] _vpointer;
+ if (_surface)
+ _surface->free();
delete _surface;
}
diff --git a/engines/bladerunner/vqa_decoder.h b/engines/bladerunner/vqa_decoder.h
index 110ca704c5..ca7e067305 100644
--- a/engines/bladerunner/vqa_decoder.h
+++ b/engines/bladerunner/vqa_decoder.h
@@ -107,8 +107,12 @@ private:
Loop *loops;
LoopInfo()
- : loopCount(0)
+ : loopCount(0),
+ loops(nullptr)
{}
+ ~LoopInfo() {
+ delete[] loops;
+ }
};
struct ClipInfo