- Removed the resetDriver() hack. The reason why notes stopped being played sometimes was actually mixer->stopAll(), which stopped the music stream as well (spotted by waltervn)

- Hooked setReverb() to actually set music reverb

svn-id: r47392
This commit is contained in:
Filippos Karapetis 2010-01-19 20:02:17 +00:00
parent dbe665908e
commit f0e6c3f142
5 changed files with 2 additions and 30 deletions

View File

@ -1885,8 +1885,6 @@ static EngineState *_game_run(EngineState *&s, int restoring) {
game_init(s);
#ifdef USE_OLD_MUSIC_FUNCTIONS
s->_sound.sfx_reset_player();
#else
s->_soundCmd->resetDriver();
#endif
_init_stack_base_with_selector(s, s->_kernel->_selectorCache.play);

View File

@ -91,8 +91,6 @@ void SciMusic::init() {
}
void SciMusic::clearPlayList() {
_pMixer->stopAll();
_mutex.lock();
while (!_playList.empty()) {
soundStop(_playList[0]);
@ -134,23 +132,10 @@ MusicEntry *SciMusic::getSlot(reg_t obj) {
}
void SciMusic::setReverb(byte reverb) {
Common::StackLock lock(_mutex);
_reverb = reverb;
// TODO: actually set reverb for MT-32
// A good test case for this are the first two rooms in Longbow:
// reverb is set for the first room (the cave) and is subsequently
// cleared when Robin exits the cave
}
void SciMusic::resetDriver() {
Common::StackLock lock(_mutex);
// TODO/FIXME: is there any better way to reset the driver?
_pMidiDrv->close();
_pMidiDrv->open();
_pMidiDrv->setTimerCallback(this, &miditimerCallback);
_pMidiDrv->setReverb(reverb);
}
static int f_compare(const void *arg1, const void *arg2) {

View File

@ -187,8 +187,6 @@ public:
void setReverb(byte reverb);
void resetDriver();
#ifndef USE_OLD_MUSIC_FUNCTIONS
virtual void saveLoadWithSerializer(Common::Serializer &ser);
#endif

View File

@ -1065,8 +1065,6 @@ void SoundCommandParser::reconstructPlayList(int savegame_version) {
#ifndef USE_OLD_MUSIC_FUNCTIONS
Common::StackLock lock(_music->_mutex);
_music->resetDriver();
const MusicList::iterator end = _music->getPlayListEnd();
for (MusicList::iterator i = _music->getPlayListStart(); i != end; ++i) {
if (savegame_version < 14) {
@ -1096,12 +1094,6 @@ void SoundCommandParser::printPlayList(Console *con) {
#endif
}
void SoundCommandParser::resetDriver() {
#ifndef USE_OLD_MUSIC_FUNCTIONS
_music->resetDriver();
#endif
}
void SoundCommandParser::setMasterVolume(int vol) {
#ifndef USE_OLD_MUSIC_FUNCTIONS
_music->soundSetMasterVolume(vol);

View File

@ -62,7 +62,6 @@ public:
void syncPlayList(Common::Serializer &s);
void reconstructPlayList(int savegame_version);
void printPlayList(Console *con);
void resetDriver();
void setMasterVolume(int vol);
#ifndef USE_OLD_MUSIC_FUNCTIONS