From 97b57df1b7dde08dd29355979a57d085c0c49853 Mon Sep 17 00:00:00 2001 From: Cary Sandvig Date: Thu, 7 Dec 2000 19:30:54 +0000 Subject: [PATCH] more safety wrt loading on machines without a soundcard --- panda/src/audio/audio_win_traits.cxx | 22 ++++++++++++++++++++++ panda/src/audio/test_audio.cxx | 2 ++ 2 files changed, 24 insertions(+) diff --git a/panda/src/audio/audio_win_traits.cxx b/panda/src/audio/audio_win_traits.cxx index f4c1d04624..606b059234 100644 --- a/panda/src/audio/audio_win_traits.cxx +++ b/panda/src/audio/audio_win_traits.cxx @@ -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(); diff --git a/panda/src/audio/test_audio.cxx b/panda/src/audio/test_audio.cxx index 3ab924050f..4753d9ab39 100644 --- a/panda/src/audio/test_audio.cxx +++ b/panda/src/audio/test_audio.cxx @@ -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; }