Преглед изворни кода

turns out miles isn't thread-safe

David Rose пре 19 година
родитељ
комит
0592e39b81
1 измењених фајлова са 8 додато и 2 уклоњено
  1. 8 2
      panda/src/audiotraits/milesAudioManager.cxx

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

@@ -399,9 +399,15 @@ get_sound(const string& file_name, bool) {
 
   if (sd == (SoundData *)NULL) {
     // ...the sound was not found in the cache/pool.
-    _lock.release();
+
+    // Ideally, we should release the lock while we're performing the
+    // actual load, so multiple threads can be loading sounds in
+    // parallel.  However, it appears that Miles is internally not
+    // thread-safe, so we can't do that.
+
+    //_lock.release();
     sd = load(path);
-    _lock.lock();
+    //_lock.lock();
 
     if (sd != (SoundData *)NULL) {
       SoundMap::const_iterator si = _sounds.find(path);