mirror of
https://github.com/panda3d/panda3d.git
synced 2026-03-18 10:00:59 -05:00
no leaked tasks on exit
This commit is contained in:
@@ -5,6 +5,7 @@ from direct.interval.IntervalGlobal import *
|
||||
from direct.distributed.DistributedNode import DistributedNode
|
||||
from direct.task import Task
|
||||
from direct.gui import DirectGuiGlobals
|
||||
from direct.showbase.EventGroup import EventGroup
|
||||
|
||||
if __debug__:
|
||||
# For grid drawing
|
||||
@@ -76,10 +77,17 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
|
||||
taskMgr.add(
|
||||
self.processVisibility, self.taskName("processVisibility"))
|
||||
|
||||
def stopProcessVisibility(self, clearAll=False):
|
||||
def stopProcessVisibility(self, clearAll=False, event=None):
|
||||
taskMgr.remove(self.taskName("processVisibility"))
|
||||
if event is not None:
|
||||
eventGroup = EventGroup('DistCartesianGrid.stopProcessVis',
|
||||
doneEvent=event)
|
||||
if self.gridVisContext is not None:
|
||||
self.cr.removeInterest(self.gridVisContext)
|
||||
if event is not None:
|
||||
removeEvent = eventGroup.newEvent('%s.removeInterest' % self.doId)
|
||||
else:
|
||||
removeEvent = None
|
||||
self.cr.removeInterest(self.gridVisContext, removeEvent)
|
||||
self.gridVisContext = None
|
||||
self.visAvatar = None
|
||||
self.visZone = None
|
||||
@@ -87,7 +95,11 @@ class DistributedCartesianGrid(DistributedNode, CartesianGridBase):
|
||||
# sometimes we also need to remove vis avatar from
|
||||
# my parent if it is also a grid
|
||||
if (clearAll):
|
||||
self.cr.doId2do[self.parentId].worldGrid.stopProcessVisibility()
|
||||
if event is not None:
|
||||
parentEvent = eventGroup.newEvent('%s.parent.removeInterest' % self.doId)
|
||||
else:
|
||||
parentEvent = None
|
||||
self.cr.doId2do[self.parentId].worldGrid.stopProcessVisibility(event=parentEvent)
|
||||
|
||||
def processVisibility(self, task):
|
||||
pos = self.visAvatar.getPos(self)
|
||||
|
||||
Reference in New Issue
Block a user