Bläddra i källkod

added callback to TaskThreaded

Darren Ranalli 19 år sedan
förälder
incheckning
89e8fdc5bf
1 ändrade filer med 7 tillägg och 2 borttagningar
  1. 7 2
      direct/src/showbase/TaskThreaded.py

+ 7 - 2
direct/src/showbase/TaskThreaded.py

@@ -9,7 +9,7 @@ class TaskThreaded:
 
     _Serial = SerialNum()
     
-    def __init__(self, name, threaded=True, timeslice=None):
+    def __init__(self, name, threaded=True, timeslice=None, callback=None):
         # timeslice is how long this thread should take every frame.
         self.__name = name
         self.__threaded=threaded
@@ -20,6 +20,10 @@ class TaskThreaded:
         self._taskStartTime = None
         self.__threads = set()
 
+    def finished(self):
+        if self.callback:
+            self.callback()
+
     def destroy(self):
         for taskName in self.__taskNames:
             taskMgr.remove(taskName)
@@ -56,7 +60,8 @@ class TaskThreaded:
             thread._destroy()
         else:
             if not self.__threaded:
-                thread.run()
+                while not thread.isFinished():
+                    thread.run()
                 thread._destroy()
             else:
                 assert not thread in self.__threads