mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
fixed FrameDelayedCall destroy/finish if callback already called, added destroy/finish to DelayedCall
This commit is contained in:
parent
dd03048f6e
commit
89638440e5
@ -2501,8 +2501,23 @@ class DelayedCall:
|
||||
if delay is None:
|
||||
delay = .01
|
||||
self._func = func
|
||||
taskMgr.doMethodLater(delay, self._doCallback, 'DelayedCallback-%s' % name)
|
||||
self._taskName = 'DelayedCallback-%s' % name
|
||||
self._delay = delay
|
||||
self._finished = False
|
||||
self._addDoLater()
|
||||
def destroy(self):
|
||||
self._finished = True
|
||||
self._removeDoLater()
|
||||
def finish(self):
|
||||
if not self._finished:
|
||||
self._doCallback()
|
||||
self.destroy()
|
||||
def _addDoLater(self):
|
||||
taskMgr.doMethodLater(self._delay, self._doCallback, self._taskName)
|
||||
def _removeDoLater(self):
|
||||
taskMgr.remove(self._taskName)
|
||||
def _doCallback(self, task):
|
||||
self._finished = True
|
||||
func = self._func
|
||||
del self._func
|
||||
func()
|
||||
@ -2519,11 +2534,15 @@ class FrameDelayedCall:
|
||||
self._callback = callback
|
||||
self._cancelFunc = cancelFunc
|
||||
self._taskName = uniqueName('%s-%s' % (self.__class__.__name__, self._name))
|
||||
self._finished = False
|
||||
self._startTask()
|
||||
def destroy(self):
|
||||
self._finished = True
|
||||
self._stopTask()
|
||||
def finish(self):
|
||||
self._callback()
|
||||
if not self._finished:
|
||||
self._finished = True
|
||||
self._callback()
|
||||
self.destroy()
|
||||
def _startTask(self):
|
||||
taskMgr.add(self._frameTask, self._taskName)
|
||||
|
Loading…
x
Reference in New Issue
Block a user