Browse Source

put lock around new method

Darren Ranalli 17 years ago
parent
commit
0350e26e7c
1 changed files with 9 additions and 4 deletions
  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
         # classes to call down (speed optimization, assuming objects
         # accept/ignore more than once over their lifetime)
         # accept/ignore more than once over their lifetime)
         # get unique messenger id for this object
         # get unique messenger id for this object
+        # assumes lock is held.
         if not hasattr(object, '_messengerId'):
         if not hasattr(object, '_messengerId'):
             object._messengerId = (object.__class__.__name__, self._messengerIdGen)
             object._messengerId = (object.__class__.__name__, self._messengerIdGen)
             self._messengerIdGen += 1
             self._messengerIdGen += 1
@@ -78,10 +79,14 @@ class Messenger:
         return self._id2object[id][1]
         return self._id2object[id][1]
 
 
     def _getObjects(self):
     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):
     def _getNumListeners(self, event):
         return len(self.__callbacks.get(event, {}))
         return len(self.__callbacks.get(event, {}))