diff options
| author | Max Horn | 2008-01-05 22:35:30 +0000 | 
|---|---|---|
| committer | Max Horn | 2008-01-05 22:35:30 +0000 | 
| commit | 923ad313dc1e85ff3e2169f08abe0b2e016896c2 (patch) | |
| tree | 9f2997cd35bae683006e1d75382040e81dfd500f | |
| parent | 64601d446f3de6099e3f2d043bfde3136e4a330d (diff) | |
| download | scummvm-rg350-923ad313dc1e85ff3e2169f08abe0b2e016896c2.tar.gz scummvm-rg350-923ad313dc1e85ff3e2169f08abe0b2e016896c2.tar.bz2 scummvm-rg350-923ad313dc1e85ff3e2169f08abe0b2e016896c2.zip | |
Let the audio mixer delete the streamSou object
svn-id: r30265
| -rw-r--r-- | engines/scumm/imuse_digi/dimuse.cpp | 4 | ||||
| -rw-r--r-- | engines/scumm/imuse_digi/dimuse_script.cpp | 20 | ||||
| -rw-r--r-- | engines/scumm/imuse_digi/dimuse_track.cpp | 2 | 
3 files changed, 7 insertions, 19 deletions
| diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp index 76233dce26..9c28a67d41 100644 --- a/engines/scumm/imuse_digi/dimuse.cpp +++ b/engines/scumm/imuse_digi/dimuse.cpp @@ -357,13 +357,13 @@ void IMuseDigital::callback() {  					assert(feedSize >= 0);  				} while (feedSize != 0);  			} else { -				assert(track->streamSou);  				if (_mixer->isReady()) {  					// FIXME: Can't we replace track->mixerStreamRunning by  					// _mixer->isSoundHandleActive(track->mixChanHandle) ?  					if (!track->mixerStreamRunning) {  						track->mixerStreamRunning = true; -						_mixer->playInputStream(type, &track->mixChanHandle, track->streamSou, -1, vol, pan, false); +						assert(track->streamSou); +						_mixer->playInputStream(type, &track->mixChanHandle, track->streamSou, -1, vol, pan);  					} else {  						_mixer->setChannelVolume(track->mixChanHandle, vol);  						_mixer->setChannelBalance(track->mixChanHandle, pan); diff --git a/engines/scumm/imuse_digi/dimuse_script.cpp b/engines/scumm/imuse_digi/dimuse_script.cpp index 0d3ee7440b..9e3337076a 100644 --- a/engines/scumm/imuse_digi/dimuse_script.cpp +++ b/engines/scumm/imuse_digi/dimuse_script.cpp @@ -175,17 +175,12 @@ void IMuseDigital::flushTrack(Track *track) {  		if (track->stream->endOfStream()) {  			_mixer->stopHandle(track->mixChanHandle);  			delete track->stream; -			track->stream = NULL;  			_sound->closeSound(track->soundDesc); -			track->soundDesc = NULL; -			track->used = false; +			memset(track, 0, sizeof(Track));  		}  	} else { -		assert(track->streamSou);  		_mixer->stopHandle(track->mixChanHandle); -		delete track->streamSou; -		track->streamSou = NULL; -		track->used = false; +		memset(track, 0, sizeof(Track));  	}  } @@ -400,22 +395,15 @@ void IMuseDigital::stopAllSounds() {  			// Stop the sound output, *now*. No need to use toBeRemoved etc.  			// as we are protected by a mutex, and this method is never called  			// from IMuseDigital::callback either. +			_mixer->stopHandle(track->mixChanHandle);  			if (!track->souStreamUsed) {  				assert(track->stream); -				_mixer->stopHandle(track->mixChanHandle);  				delete track->stream;  				_sound->closeSound(track->soundDesc); -			} else if (track->streamSou) { -				assert(track->streamSou); -				_mixer->stopHandle(track->mixChanHandle); -				delete track->streamSou;  			}  			// Mark the track as unused -			track->soundDesc = NULL; -			track->streamSou = NULL; -			track->stream = NULL; -			track->used = false; +			memset(track, 0, sizeof(Track));  		}  	}  } diff --git a/engines/scumm/imuse_digi/dimuse_track.cpp b/engines/scumm/imuse_digi/dimuse_track.cpp index 7dff90b65a..f7cc3f27af 100644 --- a/engines/scumm/imuse_digi/dimuse_track.cpp +++ b/engines/scumm/imuse_digi/dimuse_track.cpp @@ -52,7 +52,7 @@ int IMuseDigital::allocSlot(int priority) {  		for (l = 0; l < MAX_DIGITAL_TRACKS; l++) {  			Track *track = _track[l];  			if (track->used && !track->toBeRemoved && -					(lowest_priority > track->soundPriority) && !track->streamSou) { +					(lowest_priority > track->soundPriority) && !track->souStreamUsed) {  				lowest_priority = track->soundPriority;  				trackId = l;  			} | 
