Browse Source

added audioManager is_valid()

Dave Schuyler 24 years ago
parent
commit
56dec3de77

+ 2 - 0
panda/src/audio/audioManager.h

@@ -38,6 +38,8 @@ PUBLISHED:
   static PT(AudioManager) create_AudioManager();
   virtual ~AudioManager() {}
   
+  virtual bool is_valid() = 0;
+  
   // Get a sound:
   virtual PT(AudioSound) get_sound(const string& file_name) = 0;
   // Tell the AudioManager there is no need to keep this one cached.

+ 10 - 0
panda/src/audio/nullAudioManager.cxx

@@ -40,6 +40,16 @@ NullAudioManager::
   // intentionally blank.
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: NullAudioManager::is_valid
+//       Access: Public
+//  Description: 
+////////////////////////////////////////////////////////////////////
+bool NullAudioManager::
+is_valid() {
+  return false;
+}
+
 ////////////////////////////////////////////////////////////////////
 //     Function: NullAudioManager::get_sound
 //       Access: Public

+ 2 - 0
panda/src/audio/nullAudioManager.h

@@ -32,6 +32,8 @@ public:
   NullAudioManager();
   virtual ~NullAudioManager();
   
+  virtual bool is_valid();
+  
   virtual PT(AudioSound) get_sound(const string&);
   virtual void drop_sound(const string&);
 

+ 13 - 0
panda/src/audiotraits/milesAudioManager.cxx

@@ -46,6 +46,7 @@ MilesAudioManager() {
   audio_debug("  audio_volume="<<audio_volume);
   _active = audio_active;
   _volume = audio_volume;
+  _is_valid = true;
   if (!_active_managers) {
     S32 use_digital=(audio_play_wave || audio_play_mp3)?1:0;
     S32 use_MIDI=(audio_play_midi)?1:0;
@@ -80,6 +81,7 @@ MilesAudioManager() {
           if (!AIL_quick_startup(use_digital, 1, audio_output_rate, 
               audio_output_bits, audio_output_channels)) {
             audio_error("  startup failed, "<<AIL_last_error());
+            _is_valid = false;
           }
         } else {
           audio_debug("  using Miles software midi");
@@ -87,6 +89,7 @@ MilesAudioManager() {
       }
     } else {
       audio_debug("  AIL_quick_startup failed: "<<AIL_last_error());
+      _is_valid = false;
     }
   }
   // We increment _active_managers regardless of possible errors above.
@@ -128,6 +131,16 @@ MilesAudioManager::
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioManager::is_valid
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
+bool MilesAudioManager::
+is_valid() {
+  return _is_valid;
+}
+
 ////////////////////////////////////////////////////////////////////
 //     Function: MilesAudioManager::load
 //       Access: 

+ 4 - 0
panda/src/audiotraits/milesAudioManager.h

@@ -35,6 +35,8 @@ public:
   MilesAudioManager();
   ~MilesAudioManager();
 
+  bool is_valid();
+  
   PT(AudioSound) get_sound(const string& file_name);
   void drop_sound(const string& file_name);
 
@@ -59,6 +61,8 @@ private:
   // Optional Downloadable Sound field for software midi:
   static HDLSFILEID _dls_field;
   
+  bool _is_valid;
+  
   HAUDIO load(Filename file_name);
   // Tell the manager that the sound dtor was called.
   void release_sound(MilesAudioSound* audioSound);