mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 08:44:19 -04:00
more safety wrt loading on machines without a soundcard
This commit is contained in:
parent
82e8d4f6ef
commit
97b57df1b7
@ -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();
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user