diff --git a/direct/src/showbase/EventManager.py b/direct/src/showbase/EventManager.py index b3b9d6ef5b..77291d2906 100644 --- a/direct/src/showbase/EventManager.py +++ b/direct/src/showbase/EventManager.py @@ -16,6 +16,11 @@ from direct.task.Task import Task class EventManager: notify = None + + # for efficiency, only call import once per module + EventStorePandaNode = None + EventQueue = None + EventHandler = None def __init__(self, eventQueue = None): """ @@ -61,8 +66,10 @@ class EventManager: # which will be downcast to that type ptr = eventParameter.getPtr() - from pandac.PandaModules import EventStorePandaNode - if isinstance(ptr, EventStorePandaNode): + if EventManager.EventStorePandaNode is None: + from pandac.PandaModules import EventStorePandaNode + EventManager.EventStorePandaNode = EventStorePandaNode + if isinstance(ptr, EventManager.EventStorePandaNode): # Actually, it's a kludgey wrapper around a PandaNode # pointer. Return the node. ptr = ptr.getValue() @@ -101,19 +108,22 @@ class EventManager: def restart(self): - from pandac.PandaModules import EventQueue, EventHandler + if None in (EventManager.EventQueue, EventManager.EventHandler): + from pandac.PandaModules import EventQueue, EventHandler + EventManager.EventQueue = EventQueue + EventManager.EventHandler = EventHandler if self.eventQueue == None: - self.eventQueue = EventQueue.getGlobalEventQueue() + self.eventQueue = EventManager.EventQueue.getGlobalEventQueue() if self.eventHandler == None: - if self.eventQueue == EventQueue.getGlobalEventQueue(): + if self.eventQueue == EventManager.EventQueue.getGlobalEventQueue(): # If we are using the global event queue, then we also # want to use the global event handler. - self.eventHandler = EventHandler.getGlobalEventHandler(self.eventQueue) + self.eventHandler = EventManager.EventHandler.getGlobalEventHandler(self.eventQueue) else: # Otherwise, we need our own event handler. - self.eventHandler = EventHandler(self.eventQueue) + self.eventHandler = EventManager.EventHandler(self.eventQueue) taskMgr.add(self.eventLoopTask, 'eventManager')