From f32b59b92df01a66e67e9dfafcf1c84d1345c9e0 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 28 Feb 2003 19:45:54 +0000 Subject: [PATCH] add get_null_sound() --- panda/src/audio/audioManager.cxx | 18 ++++++++++++++++-- panda/src/audio/audioManager.h | 2 ++ panda/src/audiotraits/milesAudioManager.cxx | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/panda/src/audio/audioManager.cxx b/panda/src/audio/audioManager.cxx index 69f133d86b..ec053efd65 100644 --- a/panda/src/audio/audioManager.cxx +++ b/panda/src/audio/audioManager.cxx @@ -83,9 +83,23 @@ create_AudioManager() { return am; } +//////////////////////////////////////////////////////////////////// +// Function: AudioManager::get_null_sound +// Access: Public +// Description: Returns a special NullAudioSound object that has all +// the interface of a normal sound object, but plays no +// sound. This same object may also be returned by +// get_sound() if it fails. +//////////////////////////////////////////////////////////////////// +PT(AudioSound) AudioManager:: +get_null_sound() { + if (_null_sound == (AudioSound *)NULL) { + _null_sound = new NullAudioSound; + } + return _null_sound; +} + void AudioManager:: set_mutually_exclusive(bool bExclusive) { _bExclusive = bExclusive; } - - diff --git a/panda/src/audio/audioManager.h b/panda/src/audio/audioManager.h index cd27d07c0d..05cd6d1f1e 100644 --- a/panda/src/audio/audioManager.h +++ b/panda/src/audio/audioManager.h @@ -42,6 +42,7 @@ PUBLISHED: // Get a sound: virtual PT(AudioSound) get_sound(const string& file_name) = 0; + PT(AudioSound) get_null_sound(); // Tell the AudioManager there is no need to keep this one cached. // This doesn't break any connection between AudioSounds that have @@ -83,6 +84,7 @@ public: protected: static Create_AudioManager_proc* _create_AudioManager; bool _bExclusive; + PT(AudioSound) _null_sound; AudioManager() { // intentionally blank. diff --git a/panda/src/audiotraits/milesAudioManager.cxx b/panda/src/audiotraits/milesAudioManager.cxx index ddb75d4a40..9a6479f077 100644 --- a/panda/src/audiotraits/milesAudioManager.cxx +++ b/panda/src/audiotraits/milesAudioManager.cxx @@ -265,7 +265,7 @@ get_sound(const string& file_name) { if(!is_valid()) { audio_debug("invalid MilesAudioManager returning NullSound"); - return new NullAudioSound(); + return get_null_sound(); } assert(is_valid()); @@ -303,7 +303,7 @@ get_sound(const string& file_name) { // The insert failed. audio_debug(" failed map insert of "<