tweeking on sound shutdown
This commit is contained in:
parent
941422ee9e
commit
c215c0b044
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue