aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2007-02-20 18:50:17 +0000
committerMax Horn2007-02-20 18:50:17 +0000
commit227a080e5b25762dc7a5a942dcfbfdbfcd76c372 (patch)
treec524092b2e9bb023bbaced29e8a245cf2cf6dff5 /engines
parent547858993725af19d2167857c4e7a4a8ba8da185 (diff)
downloadscummvm-rg350-227a080e5b25762dc7a5a942dcfbfdbfcd76c372.tar.gz
scummvm-rg350-227a080e5b25762dc7a5a942dcfbfdbfcd76c372.tar.bz2
scummvm-rg350-227a080e5b25762dc7a5a942dcfbfdbfcd76c372.zip
Patch #1663933 (Kill premix channel) with a few tiny additional tweaks by me
svn-id: r25752
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/sound.cpp4
-rw-r--r--engines/agi/sound.h6
-rw-r--r--engines/cine/sound_driver.cpp4
-rw-r--r--engines/cine/sound_driver.h6
-rw-r--r--engines/engine.cpp2
-rw-r--r--engines/kyra/sound.h2
-rw-r--r--engines/kyra/sound_adlib.cpp5
-rw-r--r--engines/scumm/player_mod.cpp5
-rw-r--r--engines/scumm/player_mod.h2
-rw-r--r--engines/scumm/player_nes.cpp4
-rw-r--r--engines/scumm/player_nes.h6
-rw-r--r--engines/scumm/player_v2.cpp5
-rw-r--r--engines/scumm/player_v2.h6
-rw-r--r--engines/sky/music/adlibmusic.cpp4
-rw-r--r--engines/sky/music/adlibmusic.h6
-rw-r--r--engines/sword1/music.cpp4
-rw-r--r--engines/sword1/music.h6
-rw-r--r--engines/sword2/sound.cpp4
-rw-r--r--engines/sword2/sound.h1
19 files changed, 35 insertions, 47 deletions
diff --git a/engines/agi/sound.cpp b/engines/agi/sound.cpp
index f4a2ee790e..2863f7b16b 100644
--- a/engines/agi/sound.cpp
+++ b/engines/agi/sound.cpp
@@ -324,14 +324,14 @@ int SoundMgr::initSound() {
/*loadInstruments("demo.sys"); */
#endif
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
return r;
}
void SoundMgr::deinitSound() {
debugC(3, kDebugLevelSound, "()");
- _mixer->setupPremix(NULL);
+ _mixer->stopHandle(_soundHandle);
free(sndBuffer);
}
diff --git a/engines/agi/sound.h b/engines/agi/sound.h
index 415b891762..8a4f6a5deb 100644
--- a/engines/agi/sound.h
+++ b/engines/agi/sound.h
@@ -26,10 +26,7 @@
#define AGI_SOUND_H
#include "sound/audiostream.h"
-
-namespace Audio {
-class Mixer;
-} // End of namespace Audio
+#include "sound/mixer.h"
namespace Agi {
@@ -128,6 +125,7 @@ public:
private:
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
uint32 _sampleRate;
void premixerCall(int16 *buf, uint len);
diff --git a/engines/cine/sound_driver.cpp b/engines/cine/sound_driver.cpp
index 84b0a1416e..0bc7c8c33f 100644
--- a/engines/cine/sound_driver.cpp
+++ b/engines/cine/sound_driver.cpp
@@ -60,11 +60,11 @@ AdlibSoundDriver::AdlibSoundDriver(Audio::Mixer *mixer)
memset(_channelsVolumeTable, 0, sizeof(_channelsVolumeTable));
memset(_instrumentsTable, 0, sizeof(_instrumentsTable));
initCard();
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
AdlibSoundDriver::~AdlibSoundDriver() {
- _mixer->setupPremix(NULL);
+ _mixer->stopHandle(_soundHandle);
}
void AdlibSoundDriver::setupChannel(int channel, const byte *data, int instrument, int volume) {
diff --git a/engines/cine/sound_driver.h b/engines/cine/sound_driver.h
index 2cb2b5c97f..c6fc571f89 100644
--- a/engines/cine/sound_driver.h
+++ b/engines/cine/sound_driver.h
@@ -27,10 +27,7 @@
#include "sound/audiostream.h"
#include "sound/fmopl.h"
-
-namespace Audio {
- class Mixer;
-}
+#include "sound/mixer.h"
namespace Cine {
@@ -105,6 +102,7 @@ protected:
FM_OPL *_opl;
int _sampleRate;
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
byte _vibrato;
int _channelsVolumeTable[4];
diff --git a/engines/engine.cpp b/engines/engine.cpp
index b6837d5ee2..5ba7acbffe 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -50,7 +50,7 @@ Engine::Engine(OSystem *syst)
}
Engine::~Engine() {
- _mixer->stopAll(true);
+ _mixer->stopAll();
g_engine = NULL;
}
diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h
index 5a602cb980..e286187fc7 100644
--- a/engines/kyra/sound.h
+++ b/engines/kyra/sound.h
@@ -57,8 +57,6 @@
namespace Audio {
class AudioStream;
-class Mixer;
-class SoundHandle;
} // end of namespace Audio
namespace Kyra {
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp
index 307bf49efc..3cb309278e 100644
--- a/engines/kyra/sound_adlib.cpp
+++ b/engines/kyra/sound_adlib.cpp
@@ -406,6 +406,7 @@ private:
Common::Mutex _mutex;
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
bool _v2;
@@ -445,7 +446,7 @@ AdlibDriver::AdlibDriver(Audio::Mixer *mixer, bool v2) {
_tablePtr1 = _tablePtr2 = 0;
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
_samplesPerCallback = getRate() / CALLBACKS_PER_SECOND;
_samplesPerCallbackRemainder = getRate() % CALLBACKS_PER_SECOND;
@@ -456,7 +457,7 @@ AdlibDriver::AdlibDriver(Audio::Mixer *mixer, bool v2) {
}
AdlibDriver::~AdlibDriver() {
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
OPLDestroy(_adlib);
_adlib = 0;
}
diff --git a/engines/scumm/player_mod.cpp b/engines/scumm/player_mod.cpp
index 8ce3c80132..38a5c8554e 100644
--- a/engines/scumm/player_mod.cpp
+++ b/engines/scumm/player_mod.cpp
@@ -46,12 +46,11 @@ Player_MOD::Player_MOD(Audio::Mixer *mixer) {
_playproc = NULL;
_playparam = NULL;
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
Player_MOD::~Player_MOD() {
- // Detach the premix callback handler
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
for (int i = 0; i < MOD_MAXCHANS; i++) {
if (!_channels[i].id)
continue;
diff --git a/engines/scumm/player_mod.h b/engines/scumm/player_mod.h
index 6146c1c4a2..6e381191d1 100644
--- a/engines/scumm/player_mod.h
+++ b/engines/scumm/player_mod.h
@@ -26,6 +26,7 @@
#include "scumm/scumm.h"
#include "sound/audiostream.h"
+#include "sound/mixer.h"
namespace Audio {
class RateConverter;
@@ -77,6 +78,7 @@ private:
};
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
uint32 _mixamt;
uint32 _mixpos;
diff --git a/engines/scumm/player_nes.cpp b/engines/scumm/player_nes.cpp
index eaa59fb4f8..4836ad5629 100644
--- a/engines/scumm/player_nes.cpp
+++ b/engines/scumm/player_nes.cpp
@@ -620,11 +620,11 @@ Player_NES::Player_NES(ScummEngine *scumm, Audio::Mixer *mixer) {
APU_writeControl(0);
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
Player_NES::~Player_NES() {
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
delete _apu;
}
diff --git a/engines/scumm/player_nes.h b/engines/scumm/player_nes.h
index 6140460838..eaececee2d 100644
--- a/engines/scumm/player_nes.h
+++ b/engines/scumm/player_nes.h
@@ -27,10 +27,7 @@
#include "common/scummsys.h"
#include "scumm/music.h"
#include "sound/audiostream.h"
-
-namespace Audio {
- class Mixer;
-}
+#include "sound/mixer.h"
namespace Scumm {
@@ -80,6 +77,7 @@ private:
ScummEngine *_vm;
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
APUe::APU *_apu;
int _sample_rate;
int _samples_per_frame;
diff --git a/engines/scumm/player_v2.cpp b/engines/scumm/player_v2.cpp
index 1eb7b958dd..9f764a5d0b 100644
--- a/engines/scumm/player_v2.cpp
+++ b/engines/scumm/player_v2.cpp
@@ -375,13 +375,12 @@ Player_V2::Player_V2(ScummEngine *scumm, Audio::Mixer *mixer, bool pcjr) {
set_pcjr(pcjr);
setMusicVolume(255);
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
Player_V2::~Player_V2() {
mutex_up();
- // Detach the premix callback handler
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
mutex_down();
}
diff --git a/engines/scumm/player_v2.h b/engines/scumm/player_v2.h
index cfcd986958..704c3d9795 100644
--- a/engines/scumm/player_v2.h
+++ b/engines/scumm/player_v2.h
@@ -28,10 +28,7 @@
#include "common/mutex.h"
#include "scumm/music.h"
#include "sound/audiostream.h"
-
-namespace Audio {
- class Mixer;
-}
+#include "sound/mixer.h"
namespace Scumm {
@@ -96,6 +93,7 @@ public:
protected:
bool _isV3Game;
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
ScummEngine *_vm;
bool _pcjr;
diff --git a/engines/sky/music/adlibmusic.cpp b/engines/sky/music/adlibmusic.cpp
index 7df70e4a0f..36c962af5a 100644
--- a/engines/sky/music/adlibmusic.cpp
+++ b/engines/sky/music/adlibmusic.cpp
@@ -39,12 +39,12 @@ AdlibMusic::AdlibMusic(Audio::Mixer *pMixer, Disk *pDisk)
_opl = makeAdlibOPL(_sampleRate);
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
AdlibMusic::~AdlibMusic(void) {
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
}
void AdlibMusic::premixerCall(int16 *data, uint len) {
diff --git a/engines/sky/music/adlibmusic.h b/engines/sky/music/adlibmusic.h
index 016d43287e..b50157c3b5 100644
--- a/engines/sky/music/adlibmusic.h
+++ b/engines/sky/music/adlibmusic.h
@@ -26,10 +26,7 @@
#include "sky/music/musicbase.h"
#include "sound/audiostream.h"
#include "sound/fmopl.h"
-
-namespace Audio {
- class Mixer;
-}
+#include "sound/mixer.h"
namespace Sky {
@@ -50,6 +47,7 @@ public:
private:
FM_OPL *_opl;
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
uint8 *_initSequence;
uint32 _sampleRate, _nextMusicPoll;
virtual void setupPointers(void);
diff --git a/engines/sword1/music.cpp b/engines/sword1/music.cpp
index fe3b90c052..41d47dc5d9 100644
--- a/engines/sword1/music.cpp
+++ b/engines/sword1/music.cpp
@@ -255,11 +255,11 @@ Music::Music(Audio::Mixer *pMixer) {
_converter[0] = NULL;
_converter[1] = NULL;
_volumeL = _volumeR = 192;
- _mixer->setupPremix(this);
+ _mixer->playInputStream(Audio::Mixer::kPlainSoundType, &_soundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
Music::~Music() {
- _mixer->setupPremix(0);
+ _mixer->stopHandle(_soundHandle);
delete _converter[0];
delete _converter[1];
}
diff --git a/engines/sword1/music.h b/engines/sword1/music.h
index 606c3d3004..75bb2521c1 100644
--- a/engines/sword1/music.h
+++ b/engines/sword1/music.h
@@ -27,12 +27,9 @@
#include "common/mutex.h"
#include "common/file.h"
#include "sound/audiostream.h"
+#include "sound/mixer.h"
#include "sound/rate.h"
-namespace Audio {
- class Mixer;
-}
-
namespace Sword1 {
#define TOTAL_TUNES 270
@@ -108,6 +105,7 @@ private:
MusicHandle _handles[2];
Audio::RateConverter *_converter[2];
Audio::Mixer *_mixer;
+ Audio::SoundHandle _soundHandle;
uint32 _sampleRate;
Common::Mutex _mutex;
diff --git a/engines/sword2/sound.cpp b/engines/sword2/sound.cpp
index b1de94f3ad..1a7cc1cee6 100644
--- a/engines/sword2/sound.cpp
+++ b/engines/sword2/sound.cpp
@@ -83,11 +83,11 @@ Sound::Sound(Sword2Engine *vm) {
_mixBuffer = NULL;
_mixBufferLen = 0;
- _vm->_mixer->setupPremix(this, Audio::Mixer::kMusicSoundType);
+ _vm->_mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, false, true);
}
Sound::~Sound() {
- _vm->_mixer->setupPremix(0);
+ _vm->_mixer->stopHandle(_mixerSoundHandle);
clearFxQueue(true);
stopMusic(true);
diff --git a/engines/sword2/sound.h b/engines/sword2/sound.h
index 8c24494148..932e557eaa 100644
--- a/engines/sword2/sound.h
+++ b/engines/sword2/sound.h
@@ -176,6 +176,7 @@ private:
Common::Mutex _mutex;
+ Audio::SoundHandle _mixerSoundHandle;
Audio::SoundHandle _leadInHandle;
Audio::SoundHandle _leadOutHandle;