more safety wrt loading on machines without a soundcard

This commit is contained in:
Cary Sandvig 2000-12-07 19:30:54 +00:00
parent 82e8d4f6ef
commit 97b57df1b7
2 changed files with 24 additions and 0 deletions

View File

@ -364,6 +364,10 @@ WinSample* WinSample::load_wav(Filename filename) {
WinSample* ret = (WinSample*)0L;
initialize();
if (!audio_is_active)
return ret;
WAVEFORMATEX wavInfo;
UINT wavSize = 0;
BYTE* wavData = NULL;
@ -394,6 +398,9 @@ WinSample* WinSample::load_raw(unsigned char* data, unsigned long size) {
initialize();
if (!audio_is_active)
return ret;
// synth a wav header for this data
WAVEFORMATEX wavInfo;
ZeroMemory(&wavInfo, sizeof(WAVEFORMATEX));
@ -590,6 +597,10 @@ WinMusic* WinMusic::load_midi(Filename filename) {
if (audio_cat->is_debug())
audio_cat->debug() << "in WinMusic::load_midi()" << endl;
initialize();
if (!audio_is_active)
return (WinMusic*)0L;
// WinMusic* ret = (WinMusic*)0L;
WinMusic* ret = new WinMusic();
if (ret->_performance && ret->_music) {
@ -674,6 +685,9 @@ WinSamplePlaying::WinSamplePlaying(AudioTraits::SoundClass* s)
initialize();
if (!audio_is_active)
return;
WinSample* ws = (WinSample*)s;
if (ws == (WinSample*)0L) {
@ -816,6 +830,8 @@ void WinSamplePlayer::play_sound(AudioTraits::SoundClass* sample,
if (audio_cat->is_debug())
audio_cat->debug() << "in winsampleplayer play_sound" << endl;
initialize();
if (!audio_is_active)
return;
WinSample* wsample = (WinSample*)sample;
WinSamplePlaying* wplay = (WinSamplePlaying*)play;
LPDIRECTSOUNDBUFFER chan = wplay->get_channel();
@ -832,6 +848,8 @@ void WinSamplePlayer::play_sound(AudioTraits::SoundClass* sample,
void WinSamplePlayer::stop_sound(AudioTraits::SoundClass*,
AudioTraits::PlayingClass* play) {
initialize();
if (!audio_is_active)
return;
WinSamplePlaying* wplay = (WinSamplePlaying*)play;
LPDIRECTSOUNDBUFFER chan = wplay->get_channel();
if (chan)
@ -842,6 +860,8 @@ void WinSamplePlayer::set_volume(AudioTraits::PlayingClass* play, float v) {
if (audio_cat->is_debug())
audio_cat->debug() << "winsampleplayer set_volume" << endl;
initialize();
if (!audio_is_active)
return;
WinSamplePlaying* wplay = (WinSamplePlaying*)play;
LPDIRECTSOUNDBUFFER chan = wplay->get_channel();
if (chan) {
@ -873,6 +893,8 @@ void WinMusicPlayer::play_sound(AudioTraits::SoundClass* music,
if (audio_cat->is_debug())
audio_cat->debug() << "in WinMusicPlayer::play_sound()" << endl;
initialize();
if (!audio_is_active)
return;
WinMusic* wmusic = (WinMusic*)music;
IDirectMusicPerformance* _perf = wmusic->get_performance();
IDirectMusicSegment* _msc = wmusic->get_music();

View File

@ -17,9 +17,11 @@ main(int argc, char* argv[]) {
exit(-1);
}
AudioManager::spawn_update();
{
{
PT(AudioSound) tester = AudioPool::load_sound(argv[1]);
AudioManager::play(tester);
AudioPool::release_all_sounds();
cerr << "all sounds but 1 released" << endl;
}