From 9b13e872b3c381e37fe05c4778260315f8bf2340 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Wed, 14 Jan 2004 18:39:24 +0000 Subject: I found and fixed a nasty fade-up bug in BS2. I don't know if the same situation could happen in BS1, but it's better to be safe than sorry, so here are the same changes, as applied to the BS1 music code. svn-id: r12393 --- sword1/music.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'sword1') diff --git a/sword1/music.cpp b/sword1/music.cpp index 8b0af804c3..946b7b19b1 100644 --- a/sword1/music.cpp +++ b/sword1/music.cpp @@ -34,19 +34,23 @@ namespace Sword1 { // assume that if locking is needed it has already been taken care of. void MusicHandle::fadeDown() { - if (_fading < 0) - _fading = -_fading; - else if (_fading == 0) - _fading = FADE_LENGTH * getRate(); - _fadeSamples = FADE_LENGTH * getRate(); + if (streaming()) { + if (_fading < 0) + _fading = -_fading; + else if (_fading == 0) + _fading = FADE_LENGTH * getRate(); + _fadeSamples = FADE_LENGTH * getRate(); + } } void MusicHandle::fadeUp() { - if (_fading > 0) - _fading = -_fading; - else if (_fading == 0) - _fading = -1; - _fadeSamples = FADE_LENGTH * getRate(); + if (streaming()) { + if (_fading > 0) + _fading = -_fading; + else if (_fading == 0) + _fading = -1; + _fadeSamples = FADE_LENGTH * getRate(); + } } bool MusicHandle::endOfData() const { @@ -76,7 +80,7 @@ int MusicHandle::readBuffer(int16 *buffer, const int numSamples) { } else if (_fading < 0) { _fading--; sample = -(sample * _fading) / _fadeSamples; - if (_fading == -_fadeSamples) + if (_fading <= -_fadeSamples) _fading = 0; } *buffer++ = sample; -- cgit v1.2.3