Pārlūkot izejas kodu

added detection of unrequested deletes

Darren Ranalli 21 gadi atpakaļ
vecāks
revīzija
e49e535067
1 mainītis faili ar 10 papildinājumiem un 1 dzēšanām
  1. 10 1
      direct/src/distributed/DistributedObjectAI.py

+ 10 - 1
direct/src/distributed/DistributedObjectAI.py

@@ -31,6 +31,8 @@ class DistributedObjectAI(DirectObject.DirectObject):
             # here.
             self.lastNonQuietZone = None
 
+            self._DOAI_requestedDelete = False
+
             # These are used to implement beginBarrier().
             self.__nextBarrierContext = 0
             self.__barriers = {}
@@ -65,6 +67,12 @@ class DistributedObjectAI(DirectObject.DirectObject):
             # self.doId may not exist.  The __dict__ syntax works around that.
             assert(self.notify.debug('delete(): %s' % (self.__dict__.get("doId"))))
 
+            if not self._DOAI_requestedDelete:
+                self.notify.warning(
+                    'delete() called but requestDelete never called for %s: %s'
+                    % (self.__dict__.get('doId'), self.__class__.__name__))
+            self._DOAI_requestedDelete = False
+
             # Clean up all the pending barriers.
             for barrier in self.__barriers.values():
                 barrier.cleanup()
@@ -237,7 +245,8 @@ class DistributedObjectAI(DirectObject.DirectObject):
             self.notify.warning("Tried to delete a %s (doId %s) that is already deleted" % (self.__class__, doId))
             return
         self.air.requestDelete(self)
-
+        self._DOAI_requestedDelete = True
+        
     def taskName(self, taskString):
         return (taskString + "-" + str(self.getDoId()))