tweeking on sound shutdown

This commit is contained in:
Cary Sandvig 2001-04-10 21:25:17 +00:00
parent 941422ee9e
commit c215c0b044
11 changed files with 33 additions and 23 deletions

View File

@ -360,7 +360,8 @@ void LinuxSamplePlayer::set_volume(AudioTraits::PlayingClass* p, float v) {
p->set_volume(v);
}
void LinuxSamplePlayer::adjust_volume(AudioTraits::PlayingClass*) {
bool LinuxSamplePlayer::adjust_volume(AudioTraits::PlayingClass*) {
return false;
}
LinuxSamplePlayer* LinuxSamplePlayer::get_instance(void) {
@ -389,7 +390,8 @@ void LinuxMusicPlayer::set_volume(AudioTraits::PlayingClass* p, float v) {
p->set_volume(v);
}
void LinuxMusicPlayer::adjust_volume(AudioTraits::PlayingClass*) {
bool LinuxMusicPlayer::adjust_volume(AudioTraits::PlayingClass*) {
return false;
}
LinuxMusicPlayer* LinuxMusicPlayer::get_instance(void) {

View File

@ -121,7 +121,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static LinuxSamplePlayer* get_instance(void);
@ -139,7 +139,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static LinuxMusicPlayer* get_instance(void);

View File

@ -77,7 +77,8 @@ void AudioManager::ns_update(void) {
AudioManager::play(sound);
AudioManager::set_loop(sound, true);
} else if (AudioManager::_master_volume_change)
sound->get_player()->adjust_volume(sound->get_state());
if (sound->get_player()->adjust_volume(sound->get_state()))
AudioManager::stop(sound);
}
AudioManager::_master_volume_change = false;
}

View File

@ -321,13 +321,14 @@ void MikModSamplePlayer::set_volume(AudioTraits::PlayingClass* state,
state->set_volume(v);
}
void MikModSamplePlayer::adjust_volume(AudioTraits::PlayingClass* state) {
bool MikModSamplePlayer::adjust_volume(AudioTraits::PlayingClass* state) {
initialize();
MikModSamplePlaying* mplay = (MikModSamplePlaying*)state;
if (!AudioManager::get_sfx_active())
return;
return true;
Voice_SetVolume(mplay->get_voice(),
state->get_volume() * AudioManager::get_master_sfx_volume());
return false;
}
MikModSamplePlayer* MikModSamplePlayer::get_instance(void) {
@ -361,10 +362,11 @@ void MikModFmsynthPlayer::set_volume(AudioTraits::PlayingClass* p, float v) {
p->set_volume(v);
}
void MikModFmsynthPlayer::adjust_volume(AudioTraits::PlayingClass*) {
bool MikModFmsynthPlayer::adjust_volume(AudioTraits::PlayingClass*) {
audio_cat->error()
<< "trying to adjust volume on a sample with a MikModFmsynthPlayer"
<< endl;
return false;
}
MikModFmsynthPlayer* MikModFmsynthPlayer::get_instance(void) {
@ -397,9 +399,10 @@ void MikModMidiPlayer::set_volume(AudioTraits::PlayingClass* p, float v) {
p->set_volume(v);
}
void MikModMidiPlayer::adjust_volume(AudioTraits::PlayingClass*) {
bool MikModMidiPlayer::adjust_volume(AudioTraits::PlayingClass*) {
audio_cat->error()
<< "trying to adjust volume on a sample with a mikModMidiPlayer" << endl;
return false;
}
MikModMidiPlayer* MikModMidiPlayer::get_instance(void) {

View File

@ -106,7 +106,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static MikModSamplePlayer* get_instance(void);
@ -124,7 +124,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static MikModFmsynthPlayer* get_instance(void);
@ -142,7 +142,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static MikModMidiPlayer* get_instance(void);

View File

@ -80,9 +80,10 @@ void NullPlayer::set_volume(AudioTraits::PlayingClass* p, float v) {
p->set_volume(v);
}
void NullPlayer::adjust_volume(AudioTraits::PlayingClass*) {
bool NullPlayer::adjust_volume(AudioTraits::PlayingClass*) {
if (audio_cat->is_debug())
audio_cat->debug() << "in adjust volume in Null audio driver" << endl;
return false;
}
#endif /* AUDIO_USE_NULL */

View File

@ -43,7 +43,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
};
#include "audio_null_traits.I"

View File

@ -56,6 +56,7 @@ void AudioTraits::PlayerClass::set_volume(AudioTraits::PlayingClass*, float) {
audio_cat->error() << "In abstract PlayerClass::set_volume!" << endl;
}
void AudioTraits::PlayerClass::adjust_volume(AudioTraits::PlayingClass*) {
bool AudioTraits::PlayerClass::adjust_volume(AudioTraits::PlayingClass*) {
audio_cat->error() << "In abstract PlayerClass::adjust_volume!" << endl;
return false;
}

View File

@ -50,7 +50,7 @@ public:
virtual void play_sound(SoundClass*, PlayingClass*, float) = 0;
virtual void stop_sound(SoundClass*, PlayingClass*) = 0;
virtual void set_volume(PlayingClass*, float) = 0;
virtual void adjust_volume(PlayingClass*) = 0;
virtual bool adjust_volume(PlayingClass*) = 0;
};
};

View File

@ -896,14 +896,14 @@ void WinSamplePlayer::set_volume(AudioTraits::PlayingClass* play, float v) {
play->set_volume(v);
}
void WinSamplePlayer::adjust_volume(AudioTraits::PlayingClass* play) {
bool WinSamplePlayer::adjust_volume(AudioTraits::PlayingClass* play) {
if (audio_cat->is_debug())
audio_cat->debug() << "winsampleplayer adjust_volume" << endl;
initialize();
if (!audio_is_active)
return;
return true;
if (!AudioManager::get_sfx_active())
return;
return true;
WinSamplePlaying* wplay = (WinSamplePlaying*)play;
LPDIRECTSOUNDBUFFER chan = wplay->get_channel();
float tmpv = play->get_volume() * AudioManager::get_master_sfx_volume();
@ -911,6 +911,7 @@ void WinSamplePlayer::adjust_volume(AudioTraits::PlayingClass* play) {
LONG v2 = (tmpv * (DSBVOLUME_MAX - DSBVOLUME_MIN)) + DSBVOLUME_MIN;
chan->SetVolume(v2);
}
return false;
}
WinSamplePlayer* WinSamplePlayer::get_instance(void) {
@ -1003,18 +1004,19 @@ void WinMusicPlayer::set_volume(AudioTraits::PlayingClass* play, float v) {
play->set_volume(v);
}
void WinMusicPlayer::adjust_volume(AudioTraits::PlayingClass* play) {
bool WinMusicPlayer::adjust_volume(AudioTraits::PlayingClass* play) {
if (audio_cat->is_debug())
audio_cat->debug() << "WinMusicPlayer::adjust_volume()" << endl;
WinMusicPlaying* wplay = (WinMusicPlaying*)play;
IDirectMusicPerformance* perf = wplay->get_performance();
float tmpv = play->get_volume() * AudioManager::get_master_music_volume();
if (!AudioManager::get_music_active())
return;
return true;
if (perf) {
LONG v2 = (tmpv * (DSBVOLUME_MAX - DSBVOLUME_MIN)) + DSBVOLUME_MIN;
perf->SetGlobalParam(GUID_PerfMasterVolume, &v2, sizeof(LONG));
}
return false;
}
WinMusicPlayer* WinMusicPlayer::get_instance(void) {

View File

@ -100,7 +100,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static WinSamplePlayer* get_instance(void);
@ -118,7 +118,7 @@ public:
virtual void stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass*);
virtual void set_volume(AudioTraits::PlayingClass*, float);
virtual void adjust_volume(AudioTraits::PlayingClass*);
virtual bool adjust_volume(AudioTraits::PlayingClass*);
public:
// used by the readers
static WinMusicPlayer* get_instance(void);