[Scummvm-cvs-logs] scummvm master -> fa00fdbac4f2ff0c0a484222d932eac8e414e8c5

m-kiewitz m_kiewitz at users.sourceforge.net
Wed Jun 10 00:05:50 CEST 2015


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
bf45783661 SHERLOCK: free midi music buffer
fa00fdbac4 Merge branch 'master' of github.com:scummvm/scummvm


Commit: bf4578366102d4168de25836a5ee6721f1c625ef
    https://github.com/scummvm/scummvm/commit/bf4578366102d4168de25836a5ee6721f1c625ef
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-06-10T00:04:20+02:00

Commit Message:
SHERLOCK: free midi music buffer

Changed paths:
    engines/sherlock/music.cpp
    engines/sherlock/music.h



diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp
index 346d087..23ce07a 100644
--- a/engines/sherlock/music.cpp
+++ b/engines/sherlock/music.cpp
@@ -198,6 +198,9 @@ Music::Music(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) {
 	_musicPlaying = false;
 	_musicOn = false;
 
+	_midiMusicData = NULL;
+	_midiMusicDataSize = 0;
+
 	if (_vm->getPlatform() == Common::kPlatform3DO) {
 		// 3DO - uses digital samples for music
 		_musicOn = true;
@@ -274,6 +277,7 @@ Music::~Music() {
 		_midiDriver->close();
 		delete _midiDriver;
 	}
+	freeSong();
 }
 
 bool Music::loadSong(int songNumber) {
@@ -330,11 +334,10 @@ bool Music::playMusic(const Common::String &name) {
 		Common::String midiMusicName = name + ".MUS";
 		Common::SeekableReadStream *stream = _vm->_res->load(midiMusicName, "MUSIC.LIB");
 
-		byte *data = new byte[stream->size()];
-		int32 dataSize = stream->size();
-		assert(data);
+		_midiMusicData = new byte[stream->size()];
+		_midiMusicDataSize = stream->size();
 
-		stream->read(data, dataSize);
+		stream->read(_midiMusicData, _midiMusicDataSize);
 		delete stream;
 
 		// for dumping the music tracks
@@ -346,12 +349,14 @@ bool Music::playMusic(const Common::String &name) {
 		outFile.close();
 #endif
 
-		if (dataSize < 14) {
+		if (_midiMusicDataSize < 14) {
 			warning("Music: not enough data in music file");
 			return false;
 		}
 
-		byte *dataPos = data;
+		byte *dataPos = _midiMusicData;
+		int32 dataSize = _midiMusicDataSize;
+
 		if (memcmp("            ", dataPos, 12)) {
 			warning("Music: expected header not found in music file");
 			return false;
@@ -435,6 +440,12 @@ void Music::startSong() {
 void Music::freeSong() {
 	// TODO
 	warning("TODO: Sound::freeSong");
+	if (_midiMusicData) {
+		// free midi data buffer
+		delete[] _midiMusicData;
+		_midiMusicData = NULL;
+		_midiMusicDataSize = 0;
+	}
 }
 
 void Music::waitTimerRoland(uint time) {
diff --git a/engines/sherlock/music.h b/engines/sherlock/music.h
index f8cad3f..1e2b91a 100644
--- a/engines/sherlock/music.h
+++ b/engines/sherlock/music.h
@@ -71,6 +71,9 @@ public:
 private:
 	MusicType _musicType;
 
+	byte *_midiMusicData;
+	int32 _midiMusicDataSize;
+
 public:
 	/**
 	 * Saves sound-related settings


Commit: fa00fdbac4f2ff0c0a484222d932eac8e414e8c5
    https://github.com/scummvm/scummvm/commit/fa00fdbac4f2ff0c0a484222d932eac8e414e8c5
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-06-10T00:04:55+02:00

Commit Message:
Merge branch 'master' of github.com:scummvm/scummvm

Changed paths:
    engines/sherlock/scalpel/scalpel.cpp









More information about the Scummvm-git-logs mailing list