[Scummvm-git-logs] scummvm master -> 2caa572f042652c7faa6b2edd394474043ab03f0
sluicebox
noreply at scummvm.org
Thu Sep 15 07:13:27 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
2caa572f04 SCI: (FPFP/Demo) - fix bug no. 12610
Commit: 2caa572f042652c7faa6b2edd394474043ab03f0
https://github.com/scummvm/scummvm/commit/2caa572f042652c7faa6b2edd394474043ab03f0
Author: athrxx (athrxx at scummvm.org)
Date: 2022-09-14T23:13:20-08:00
Commit Message:
SCI: (FPFP/Demo) - fix bug no. 12610
("hanging MIDI notes")
The original interpreter resets the channels more often than we do
in the remap function. The assumption apparently was that the
loop at the very end of the function would catch everything. But
it does not catch the dontRemap channels if they are not within
the _driverFirstChannel/_driverLastChannel range.
If more bugs like this come up it might be necessary to add even
more resets, but I am very reluctant about unnecessary changes
to the remap function. And this code has been around for a long
time without any other bug reports of this sort. So I think we have
reason to be optimistic about it.
Changed paths:
engines/sci/sound/music.cpp
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index 92ede40fd22..9caeb4888d2 100644
--- a/engines/sci/sound/music.cpp
+++ b/engines/sci/sound/music.cpp
@@ -1236,6 +1236,7 @@ void SciMusic::remapChannels(bool mainThread) {
#ifdef DEBUG_REMAP
debug(" Mapping (dontRemap) song %d, channel %d to device channel %d", songIndex, _channelMap[i]._channel, i);
#endif
+ resetDeviceChannel(i, mainThread);
if (mainThread) _channelMap[i]._song->pMidiParser->mainThreadBegin();
_channelMap[i]._song->pMidiParser->remapChannel(_channelMap[i]._channel, i);
if (mainThread) _channelMap[i]._song->pMidiParser->mainThreadEnd();
More information about the Scummvm-git-logs
mailing list