aboutsummaryrefslogtreecommitdiff
path: root/engines/lure/sound.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2007-11-18 08:11:29 +0000
committerPaul Gilbert2007-11-18 08:11:29 +0000
commit91959050080f5823a700a661d597c166775f14bb (patch)
tree118c1ab8ed85ebbca688d3400b59109c6518658d /engines/lure/sound.cpp
parentab445635cb9352400f5af406fe0024324e634e61 (diff)
downloadscummvm-rg350-91959050080f5823a700a661d597c166775f14bb.tar.gz
scummvm-rg350-91959050080f5823a700a661d597c166775f14bb.tar.bz2
scummvm-rg350-91959050080f5823a700a661d597c166775f14bb.zip
Further fixes to sound code (thanks to eriktorbjorn)
svn-id: r29554
Diffstat (limited to 'engines/lure/sound.cpp')
-rw-r--r--engines/lure/sound.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/engines/lure/sound.cpp b/engines/lure/sound.cpp
index fa7b0439b2..ec48c2541c 100644
--- a/engines/lure/sound.cpp
+++ b/engines/lure/sound.cpp
@@ -458,17 +458,20 @@ bool SoundManager::musicInterface_CheckPlaying(uint8 soundNumber) {
debugC(ERROR_DETAILED, kLureDebugSounds, "musicInterface_CheckPlaying soundNumber=%d", soundNumber);
musicInterface_TidySounds();
uint8 soundNum = soundNumber & 0x7f;
+ bool result = false;
g_system->lockMutex(_soundMutex);
ManagedList<MidiMusic *>::iterator i;
for (i = _playingSounds.begin(); i != _playingSounds.end(); ++i) {
MidiMusic *music = *i;
- if (music->soundNumber() == soundNum)
- return true;
+ if (music->soundNumber() == soundNum) {
+ result = true;
+ break;
+ }
}
g_system->unlockMutex(_soundMutex);
- return false;
+ return result;
}
// musicInterface_SetVolume
@@ -571,7 +574,14 @@ MidiMusic::MidiMusic(MidiDriver *driver, ChannelEntry channels[NUM_CHANNELS_INNE
_channels = channels;
_soundNumber = soundNum;
_channelNumber = channelNum;
+
_numChannels = 8;
+ while ((_numChannels > 0) && ((_channelNumber + _numChannels > NUM_CHANNELS_INNER) ||
+ (_channels[_channelNumber + _numChannels - 1].midiChannel == NULL)))
+ --_numChannels;
+ if (_numChannels == 0)
+ error("Unable to set any channels for MidiMusic object");
+
_volume = _channels[channelNum].volume;
_passThrough = false;