瀏覽代碼

put lock around new method

Darren Ranalli 17 年之前
父節點
當前提交
0350e26e7c
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      direct/src/showbase/Messenger.py

+ 9 - 4
direct/src/showbase/Messenger.py

@@ -60,6 +60,7 @@ class Messenger:
         # classes to call down (speed optimization, assuming objects
         # accept/ignore more than once over their lifetime)
         # get unique messenger id for this object
+        # assumes lock is held.
         if not hasattr(object, '_messengerId'):
             object._messengerId = (object.__class__.__name__, self._messengerIdGen)
             self._messengerIdGen += 1
@@ -78,10 +79,14 @@ class Messenger:
         return self._id2object[id][1]
 
     def _getObjects(self):
-        objs = []
-        for refCount, obj in self._id2object.itervalues():
-            objs.append(obj)
-        return objs
+        self.lock.acquire()
+        try:
+            objs = []
+            for refCount, obj in self._id2object.itervalues():
+                objs.append(obj)
+            return objs
+        finally:
+            self.lock.release()
 
     def _getNumListeners(self, event):
         return len(self.__callbacks.get(event, {}))