aboutsummaryrefslogtreecommitdiff
path: root/sword1
diff options
context:
space:
mode:
authorTorbjörn Andersson2004-01-14 18:39:24 +0000
committerTorbjörn Andersson2004-01-14 18:39:24 +0000
commit9b13e872b3c381e37fe05c4778260315f8bf2340 (patch)
treec0d9b8da97d1bf002c50a5ff07f4c667990f8e6e /sword1
parent4980331ecf1f78124af8e1f09e174c0f25fea778 (diff)
downloadscummvm-rg350-9b13e872b3c381e37fe05c4778260315f8bf2340.tar.gz
scummvm-rg350-9b13e872b3c381e37fe05c4778260315f8bf2340.tar.bz2
scummvm-rg350-9b13e872b3c381e37fe05c4778260315f8bf2340.zip
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
Diffstat (limited to 'sword1')
-rw-r--r--sword1/music.cpp26
1 files changed, 15 insertions, 11 deletions
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;