EventManager: various microoptimizations to Python event handling

This commit is contained in:
rdb 2019-02-12 14:13:39 +01:00
parent e1b86287ef
commit 6640e5698d

View File

@ -19,7 +19,7 @@ class EventManager:
Create a C++ event queue and handler
"""
# Make a notify category for this class (unless there already is one)
if (EventManager.notify == None):
if EventManager.notify is None:
EventManager.notify = directNotify.newCategory("EventManager")
self.eventQueue = eventQueue
@ -37,8 +37,10 @@ class EventManager:
processFunc = self.processEventPstats
else:
processFunc = self.processEvent
while (not self.eventQueue.isQueueEmpty()):
processFunc(self.eventQueue.dequeueEvent())
isEmptyFunc = self.eventQueue.isQueueEmpty
dequeueFunc = self.eventQueue.dequeueEvent
while not isEmptyFunc():
processFunc(dequeueFunc())
def eventLoopTask(self, task):
"""
@ -78,13 +80,13 @@ class EventManager:
# ******** Duplicate any changes in processEventPstats *********
# **************************************************************
# Get the event name
eventName = event.getName()
eventName = event.name
if eventName:
paramList = []
for i in range(event.getNumParameters()):
eventParameter = event.getParameter(i)
for eventParameter in event.parameters:
eventParameterData = self.parseEventParameter(eventParameter)
paramList.append(eventParameterData)
# Do not print the new frame debug, it is too noisy!
if (EventManager.notify.getDebug() and eventName != 'NewFrame'):
EventManager.notify.debug('received C++ event named: ' + eventName +
@ -94,13 +96,12 @@ class EventManager:
# **************************************************************
# Send the event, we used to send it with the event
# name as a parameter, but now you can use extraArgs for that
if paramList:
messenger.send(eventName, paramList)
else:
messenger.send(eventName)
# Also send the event down into C++ land
if self.eventHandler:
self.eventHandler.dispatchEvent(event)
handler = self.eventHandler
if handler:
handler.dispatchEvent(event)
else:
# An unnamed event from C++ is probably a bad thing
@ -115,13 +116,13 @@ class EventManager:
# ******** Duplicate any changes in processEvent *********
# ********************************************************
# Get the event name
eventName = event.getName()
eventName = event.name
if eventName:
paramList = []
for i in range(event.getNumParameters()):
eventParameter = event.getParameter(i)
for eventParameter in event.parameters:
eventParameterData = self.parseEventParameter(eventParameter)
paramList.append(eventParameterData)
# Do not print the new frame debug, it is too noisy!
if (EventManager.notify.getDebug() and eventName != 'NewFrame'):
EventManager.notify.debug('received C++ event named: ' + eventName +
@ -131,7 +132,6 @@ class EventManager:
# ********************************************************
# ******** Duplicate any changes in processEvent *********
# ********************************************************
if self._wantPstats:
name = eventName
hyphen = name.find('-')
if hyphen >= 0:
@ -142,34 +142,26 @@ class EventManager:
cppPstatCollector = PStatCollector(
'App:Show code:eventManager:' + name + ':C++')
if paramList:
messenger.send(eventName, paramList)
else:
messenger.send(eventName)
# Also send the event down into C++ land
if self.eventHandler:
if self._wantPstats:
cppPstatCollector.start()
self.eventHandler.dispatchEvent(event)
# ********************************************************
# ******** Duplicate any changes in processEvent *********
# ********************************************************
if self._wantPstats:
if self.eventHandler:
# Also send the event down into C++ land
handler = self.eventHandler
if handler:
cppPstatCollector.start()
handler.dispatchEvent(event)
cppPstatCollector.stop()
pstatCollector.stop()
else:
# An unnamed event from C++ is probably a bad thing
EventManager.notify.warning('unnamed event in processEvent')
def restart(self):
if self.eventQueue == None:
if self.eventQueue is None:
self.eventQueue = EventQueue.getGlobalEventQueue()
if self.eventHandler == None:
if self.eventHandler is None:
if self.eventQueue == EventQueue.getGlobalEventQueue():
# If we are using the global event queue, then we also
# want to use the global event handler.