mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-23 20:51:14 +00:00
When both music channels are used, and a third piece of music starts,
silence the channel that appears to be closest to silence already. This is the same method I used in BS2, and it might fix a glitch I heard at the Club Alamut. svn-id: r13234
This commit is contained in:
parent
7f7f647e3c
commit
1f5d4dcd23
@ -154,12 +154,27 @@ void Music::startMusic(int32 tuneId, int32 loopFlag) {
|
||||
if (strlen(_tuneList[tuneId]) > 0) {
|
||||
int newStream = 0;
|
||||
if (_handles[0].streaming() && _handles[1].streaming()) {
|
||||
// If both handles are playing, stop the one that's
|
||||
// fading down.
|
||||
if (_handles[0].fading() > 0)
|
||||
_handles[0].stop();
|
||||
else
|
||||
_handles[1].stop();
|
||||
int streamToStop;
|
||||
// Both streams playing - one must be forced to stop.
|
||||
if (!_handles[0].fading() && !_handles[1].fading()) {
|
||||
// None of them are fading. Shouldn't happen,
|
||||
// so it doesn't matter which one we pick.
|
||||
streamToStop = 0;
|
||||
} else if (_handles[0].fading() && !_handles[1].fading()) {
|
||||
// Stream 0 is fading, so pick that one.
|
||||
streamToStop = 0;
|
||||
} else if (!_handles[0].fading() && _handles[1].fading()) {
|
||||
// Stream 1 is fading, so pick that one.
|
||||
streamToStop = 1;
|
||||
} else {
|
||||
// Both streams are fading. Pick the one that
|
||||
// is closest to silent.
|
||||
if (ABS(_handles[0].fading()) < ABS(_handles[1].fading()))
|
||||
streamToStop = 0;
|
||||
else
|
||||
streamToStop = 1;
|
||||
}
|
||||
_handles[streamToStop].stop();
|
||||
}
|
||||
if (_handles[0].streaming()) {
|
||||
_handles[0].fadeDown();
|
||||
|
Loading…
x
Reference in New Issue
Block a user