浏览代码

*** empty log message ***

Dave Schuyler 22 年之前
父节点
当前提交
b11b16a896

+ 5 - 0
panda/src/audio/nullAudioSound.cxx

@@ -24,6 +24,11 @@ namespace {
   static const string blank="";
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: 
+//       Access: 
+//  Description: All of these functions are just stubs.
+////////////////////////////////////////////////////////////////////
 NullAudioSound::NullAudioSound() {
   // Intentionally blank.
 }

+ 7 - 0
panda/src/audiotraits/config_fmodAudio.cxx

@@ -19,6 +19,13 @@
 #include "pandabase.h"
 #ifdef HAVE_FMOD //[
 
+
+// Please remove this as part of updating fmod:
+#error The fmod audio needs repair by the fmod implementers
+
+
+
+
 #include "config_fmodAudio.h"
 #include "fmodAudioManager.h"
 #include "fmodAudioSound.h"

+ 8 - 4
panda/src/audiotraits/milesAudioManager.cxx

@@ -27,11 +27,15 @@
 #include "config_express.h"
 #include "virtualFileSystem.h"
 #include "nullAudioSound.h"
+
 #include <algorithm>
 
 int MilesAudioManager::_active_managers = 0;
 HDLSFILEID MilesAudioManager::_dls_field = NULL;
-bool bMilesShutdownCalled = false;
+
+namespace {
+  bool miles_shutdown_called = false;
+}
 
 PT(AudioManager) Create_AudioManager() {
   audio_debug("Create_AudioManager() Miles.");
@@ -39,10 +43,10 @@ PT(AudioManager) Create_AudioManager() {
 }
 
 void CustomMilesShutdown() {
-  if (bMilesShutdownCalled) {
+  if (miles_shutdown_called) {
     return;
   }
-  bMilesShutdownCalled = true;
+  miles_shutdown_called = true;
 
   if (MilesAudioManager::_dls_field!=NULL) {
     HDLSDEVICE dls= NULL;
@@ -198,7 +202,7 @@ MilesAudioManager::
     }
     audio_debug("  AIL_quick_shutdown()");
     AIL_quick_shutdown();
-    bMilesShutdownCalled = true;
+    miles_shutdown_called = true;
   }
 }
 

+ 219 - 81
panda/src/audiotraits/milesAudioSound.cxx

@@ -30,97 +30,130 @@
 #endif
 
 #ifndef NDEBUG //[
-  namespace {
-    char
-    getStatusChar(HAUDIO audio) {
-      if (!audio) {
-        return '0'; // NULL.
-      }
-      switch (AIL_quick_status(audio)) {
-        case QSTAT_LOADED:
-        case QSTAT_DONE:
-          return 'r'; // Ready.
-        case QSTAT_PLAYING:
-          return 'p'; // Playing.
-        default:
-          return 'x'; // bad.
-      }
+namespace {
+  ////////////////////////////////////////////////////////////////////
+  //     Function: get_status_char
+  //       Access: 
+  //  Description: 
+  ////////////////////////////////////////////////////////////////////
+  char
+  get_status_char(HAUDIO audio) {
+    if (!audio) {
+      return '0'; // NULL.
+    }
+    switch (AIL_quick_status(audio)) {
+      case QSTAT_LOADED:
+      case QSTAT_DONE:
+        return 'r'; // Ready.
+      case QSTAT_PLAYING:
+        return 'p'; // Playing.
+      default:
+        return 'x'; // bad.
     }
+  }
+  #define miles_audio_debug(x) \
+      audio_debug("MilesAudioSound "<<get_status_char(_audio)<<" \""<<get_name() \
+      <<"\" "<< x )
+}
 
-    AILSEQUENCECB sequence_callback = 0;
-    AILSAMPLECB sample_callback = 0;
-    const user_data_index = 7;
-
-    void AILCALLBACK
-    pandaAudioAilCallback_Sequence(HSEQUENCE S) {
-      assert(S);
-      audio_debug("pandaAudioAilCallback_Sequence(HSEQUENCE="<<((void*)S)<<")");
-      MilesAudioSound* sound = (MilesAudioSound*)AIL_sequence_user_data(
-          S, user_data_index);
-      assert(sound);
-      sound->finished();
-      if (sequence_callback) {
-        sequence_callback(S);
-      }
+#else //][
+#define miles_audio_debug(x) ((void)0)
+#endif //]
+
+namespace {
+  AILSEQUENCECB sequence_callback = 0;
+  AILSAMPLECB sample_callback = 0;
+  const user_data_index = 7;
+
+  ////////////////////////////////////////////////////////////////////
+  //     Function: pandaAudioAilCallback_Sequence
+  //       Access: file scope
+  //  Description: This function is part of a hack for finish callbacks
+  //               when using the Miles quick API.
+  ////////////////////////////////////////////////////////////////////
+  void AILCALLBACK
+  pandaAudioAilCallback_Sequence(HSEQUENCE S) {
+    assert(S);
+    audio_debug("pandaAudioAilCallback_Sequence(HSEQUENCE="<<((void*)S)<<")");
+    MilesAudioSound* sound = (MilesAudioSound*)AIL_sequence_user_data(
+        S, user_data_index);
+    assert(sound);
+    sound->finished();
+    if (sequence_callback) {
+      sequence_callback(S);
     }
+  }
 
-    void AILCALLBACK
-    pandaAudioAilCallback_Sample(HSAMPLE S) {
-      assert(S);
-      audio_debug("pandaAudioAilCallback_Sample(HSAMPLE="<<((void*)S)<<")");
-      MilesAudioSound* sound = (MilesAudioSound*)AIL_sample_user_data(
-          S, user_data_index);
-      assert(sound);
-      sound->finished();
-      if (sample_callback) {
-        sample_callback(S);
-      }
+  ////////////////////////////////////////////////////////////////////
+  //     Function: pandaAudioAilCallback_Sample
+  //       Access: file scope
+  //  Description: This function is part of a hack for finish callbacks
+  //               when using the Miles quick API.
+  ////////////////////////////////////////////////////////////////////
+  void AILCALLBACK
+  pandaAudioAilCallback_Sample(HSAMPLE S) {
+    assert(S);
+    audio_debug("pandaAudioAilCallback_Sample(HSAMPLE="<<((void*)S)<<")");
+    MilesAudioSound* sound = (MilesAudioSound*)AIL_sample_user_data(
+        S, user_data_index);
+    assert(sound);
+    sound->finished();
+    if (sample_callback) {
+      sample_callback(S);
     }
-    
-    void
-    panda_AIL_quick_set_finished_callback(HAUDIO audio, MilesAudioSound* sound) {
-      audio_debug("panda_AIL_quick_set_finished_callback(audio="<<((void*)audio)
-          <<", sound="<<((void*)sound)<<")");
-      if (!audio || !sound) {
-        return;
-      }
-      AIL_lock();
-      if (audio->handle != NULL) {
-        switch (audio->type) {
-        case AIL_QUICK_XMIDI_TYPE:
-          audio_debug("  AIL_register_sequence_callback");
-          AIL_set_sequence_user_data(
-              (HSEQUENCE)audio->handle, user_data_index, (long)sound);
-          sequence_callback=AIL_register_sequence_callback(
-              (HSEQUENCE)audio->handle, pandaAudioAilCallback_Sequence);
-          audio_debug(  "AILCALLBACK "<<((void*)sequence_callback));
-          break;
-        case AIL_QUICK_DIGITAL_TYPE:
-        case AIL_QUICK_MPEG_DIGITAL_TYPE:
-          audio_debug("  AIL_register_EOS_callback");
-          AIL_set_sample_user_data(
-              (HSAMPLE)audio->handle, user_data_index, (long)sound);
-          sample_callback=AIL_register_EOS_callback(
-              (HSAMPLE)audio->handle, pandaAudioAilCallback_Sample);
-          audio_debug("  AILCALLBACK "<<((void*)sample_callback));
-          break;
-        default:
-          audio_debug("  unknown audio type");
-          break;
-        }
+  }
+
+  ////////////////////////////////////////////////////////////////////
+  //     Function: panda_AIL_quick_set_finished_callback
+  //       Access: file scope
+  //  Description: This function is part of a hack for finish callbacks
+  //               when using the Miles quick API.
+  //
+  //               This will determine whether the sound is a MIDI or
+  //               a wave sample and setup the correct callback.
+  ////////////////////////////////////////////////////////////////////
+  void
+  panda_AIL_quick_set_finished_callback(HAUDIO audio, MilesAudioSound* sound) {
+    audio_debug("panda_AIL_quick_set_finished_callback(audio="<<((void*)audio)
+        <<", sound="<<((void*)sound)<<")");
+    if (!audio || !sound) {
+      return;
+    }
+    AIL_lock();
+    if (audio->handle != NULL) {
+      switch (audio->type) {
+      case AIL_QUICK_XMIDI_TYPE:
+        audio_debug("  AIL_register_sequence_callback");
+        AIL_set_sequence_user_data(
+            (HSEQUENCE)audio->handle, user_data_index, (long)sound);
+        sequence_callback=AIL_register_sequence_callback(
+            (HSEQUENCE)audio->handle, pandaAudioAilCallback_Sequence);
+        audio_debug(  "AILCALLBACK "<<((void*)sequence_callback));
+        break;
+      case AIL_QUICK_DIGITAL_TYPE:
+      case AIL_QUICK_MPEG_DIGITAL_TYPE:
+        audio_debug("  AIL_register_EOS_callback");
+        AIL_set_sample_user_data(
+            (HSAMPLE)audio->handle, user_data_index, (long)sound);
+        sample_callback=AIL_register_EOS_callback(
+            (HSAMPLE)audio->handle, pandaAudioAilCallback_Sample);
+        audio_debug("  AILCALLBACK "<<((void*)sample_callback));
+        break;
+      default:
+        audio_debug("  unknown audio type");
+        break;
       }
-      AIL_unlock();
     }
-
+    AIL_unlock();
   }
 
-  #define miles_audio_debug(x) \
-      audio_debug("MilesAudioSound "<<getStatusChar(_audio)<<" \""<<get_name() \
-      <<"\" "<< x )
-#else //][
-  #define miles_audio_debug(x) ((void)0)
-#endif //]
+}
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 MilesAudioSound::
 MilesAudioSound(MilesAudioManager* manager,
     HAUDIO audio, string file_name, float length)
@@ -136,6 +169,11 @@ MilesAudioSound(MilesAudioManager* manager,
   _audio=AIL_quick_copy(audio);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 MilesAudioSound::
 ~MilesAudioSound() {
   miles_audio_debug("~MilesAudioSound()");
@@ -144,6 +182,11 @@ MilesAudioSound::
   AIL_quick_unload(_audio);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 play() {
   #if 0
@@ -173,6 +216,11 @@ play() {
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 stop() {
   miles_audio_debug("stop()");
@@ -187,6 +235,11 @@ stop() {
   AIL_quick_halt(_audio);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 finished() {
   miles_audio_debug("finished()");
@@ -196,6 +249,11 @@ finished() {
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_loop(bool loop) {
   miles_audio_debug("set_loop(loop="<<loop<<")");
@@ -203,12 +261,22 @@ set_loop(bool loop) {
   set_loop_count((loop)?0:1);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 bool MilesAudioSound::
 get_loop() const {
   miles_audio_debug("get_loop() returning "<<(_loop_count==0));
   return (_loop_count == 0);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_loop_count(unsigned long loop_count) {
   miles_audio_debug("set_loop_count(loop_count="<<loop_count<<")");
@@ -228,12 +296,22 @@ set_loop_count(unsigned long loop_count) {
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 unsigned long MilesAudioSound::
 get_loop_count() const {
   miles_audio_debug("get_loop_count() returning "<<_loop_count);
   return _loop_count;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_time(float time) {
   miles_audio_debug("set_time(time="<<time<<")");
@@ -241,6 +319,11 @@ set_time(float time) {
   AIL_quick_set_ms_position(_audio, milisecond_time);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 float MilesAudioSound::
 get_time() const {
   S32 milisecond_time=AIL_quick_ms_position(_audio);
@@ -249,6 +332,11 @@ get_time() const {
   return time;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_volume(float volume) {
   miles_audio_debug("set_volume(volume="<<volume<<")");
@@ -296,12 +384,22 @@ set_volume(float volume) {
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 float MilesAudioSound::
 get_volume() const {
   miles_audio_debug("get_volume() returning "<<_volume);
   return _volume;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_balance(float balance_right) {
   miles_audio_debug("set_balance(balance_right="<<balance_right<<")");
@@ -310,12 +408,22 @@ set_balance(float balance_right) {
   set_volume(_volume);
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 float MilesAudioSound::
 get_balance() const {
   audio_debug("MilesAudioSound::get_balance() returning "<<_balance);
   return _balance;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 float MilesAudioSound::
 length() const {
   if (_length == 0.0f) {
@@ -358,6 +466,11 @@ length() const {
   return _length;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_active(bool active) {
   miles_audio_debug("set_active(active="<<active<<")");
@@ -385,30 +498,55 @@ set_active(bool active) {
   }
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 bool MilesAudioSound::
 get_active() const {
   miles_audio_debug("get_active() returning "<<_active);
   return _active;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 void MilesAudioSound::
 set_finished_event(const string& event) {
   miles_audio_debug("set_finished_event(event="<<event<<")");
   _finished_event = event;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 const string& MilesAudioSound::
 get_finished_event() const {
   miles_audio_debug("get_finished_event() returning "<<_finished_event);
   return _finished_event;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 const string& MilesAudioSound::
 get_name() const {
   //audio_debug("MilesAudioSound::get_name() returning "<<_file_name);
   return _file_name;
 }
 
+////////////////////////////////////////////////////////////////////
+//     Function: MilesAudioSound::
+//       Access: 
+//  Description: 
+////////////////////////////////////////////////////////////////////
 AudioSound::SoundStatus MilesAudioSound::
 status() const {
   if (!_audio) {