aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/cge/snddrv.h2
-rw-r--r--engines/cge/sound.cpp6
2 files changed, 5 insertions, 3 deletions
diff --git a/engines/cge/snddrv.h b/engines/cge/snddrv.h
index 987582190c..93793de2fe 100644
--- a/engines/cge/snddrv.h
+++ b/engines/cge/snddrv.h
@@ -39,7 +39,7 @@ struct SmpInfo {
const uint8 *_saddr; // address
uint16 _slen; // length
uint16 _span; // left/right pan (0-15)
- int _sflag; // flag
+ int _counter; // number of time the sample should be played
};
// ******************************************************
diff --git a/engines/cge/sound.cpp b/engines/cge/sound.cpp
index 340a6c644c..fb0549ac22 100644
--- a/engines/cge/sound.cpp
+++ b/engines/cge/sound.cpp
@@ -32,6 +32,7 @@
#include "common/config-manager.h"
#include "common/memstream.h"
#include "audio/decoders/raw.h"
+#include "audio/audiostream.h"
namespace CGE {
@@ -68,7 +69,7 @@ void Sound::play(DataCk *wav, int pan) {
_smpinf._saddr = &*(wav->addr());
_smpinf._slen = (uint16)wav->size();
_smpinf._span = pan;
- _smpinf._sflag = getRepeat();
+ _smpinf._counter = getRepeat();
sndDigiStart(&_smpinf);
}
}
@@ -80,7 +81,8 @@ void Sound::sndDigiStart(SmpInfo *PSmpInfo) {
_audioStream = Audio::makeWAVStream(stream, DisposeAfterUse::YES);
// Start the new sound
- _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, _audioStream);
+ _vm->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle,
+ Audio::makeLoopingAudioStream(_audioStream, (uint)PSmpInfo->_counter));
}
void Sound::stop() {