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

View File

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