def __switchMtemu(self): if self._mtEmu is None: self._mtEmu = MTemu() g_KbManager.bindKey('left shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('right shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('left ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') g_KbManager.bindKey('right ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') else: self._mtEmu.deinit() g_KbManager.unbindKey('left ctrl') g_KbManager.unbindKey('right ctrl') g_KbManager.unbindKey('left shift') g_KbManager.unbindKey('right shift') del self._mtEmu self._mtEmu = None
class AVGAppStarter(AppStarter): def __init__(self, *args, **kwargs): self.__graphs = [] self._mtEmu = None self.__memGraph = None self.__vidMemGraph = None self.__frGraph = None self.__notifyNode = None self.__debugTouchVisOverlay = None super(AVGAppStarter, self).__init__(*args, **kwargs) def _setupDefaultKeys(self): super(AVGAppStarter, self)._setupDefaultKeys() g_KbManager.bindKey('o', self.__dumpObjects, 'Dump objects') g_KbManager.bindKey('m', self.showMemoryUsage, 'Show memory usage graph') g_KbManager.bindKey('f', self.showFrameRate, 'Show framerate graph') g_KbManager.bindKey('t', self.__switchMtemu, 'Activate multitouch emulation') g_KbManager.bindKey('e', self.__switchShowMTEvents, 'Show multitouch events') g_KbManager.bindKey('s', self.__screenshot, 'Take screenshot') def _onStart(self): try: g_Player.getVideoMemUsed() g_KbManager.bindKey('v', self.showVideoMemoryUsage, 'Show video memory usage graph') except RuntimeError: # Video memory query not supported. pass AppStarter._onStart(self) def __dumpObjects(self): gc.collect() testHelper = g_Player.getTestHelper() testHelper.dumpObjects() print 'Num anims: ', avg.getNumRunningAnims() print 'Num python objects: ', len(gc.get_objects()) def showMemoryUsage(self): if self.__memGraph: self.__memGraph.delete() self.__graphs.remove(self.__memGraph) self.__memGraph = None else: self.__memGraph = graph.AveragingGraph('Memory Usage', getValue = avg.getMemoryUsage) self.__graphs.append(self.__memGraph) self.__positionGraphs() def showVideoMemoryUsage(self): if self.__vidMemGraph: self.__vidMemGraph.delete() self.__graphs.remove(self.__vidMemGraph) self.__vidMemGraph = None else: self.__vidMemGraph = graph.AveragingGraph('Video Memory Usage', getValue = g_Player.getVideoMemUsed) self.__graphs.append(self.__vidMemGraph) self.__positionGraphs() def showFrameRate(self): if self.__frGraph: self.__frGraph.delete() self.__graphs.remove(self.__frGraph) self.__frGraph = None else: self.__frGraph = graph.SlidingGraph('Time per Frame', getValue = g_Player.getFrameTime) self.__graphs.append(self.__frGraph) self.__positionGraphs() def __positionGraphs(self): ypos = 10 for gr in self.__graphs: gr.setYPos(ypos) ypos += gr.getHeight() + 10 def __switchMtemu(self): if self._mtEmu is None: self._mtEmu = MTemu() g_KbManager.bindKey('left shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('right shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('left ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') g_KbManager.bindKey('right ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') else: self._mtEmu.deinit() g_KbManager.unbindKey('left ctrl') g_KbManager.unbindKey('right ctrl') g_KbManager.unbindKey('left shift') g_KbManager.unbindKey('right shift') del self._mtEmu self._mtEmu = None def __switchShowMTEvents(self): if self.__debugTouchVisOverlay is None: rootNode = g_Player.getRootNode() self.__debugTouchVisOverlay = apphelpers.TouchVisualizationOverlay( isDebug=True, visClass=apphelpers.DebugTouchVisualization, size=self._appNode.size, parent=rootNode) else: self.__debugTouchVisOverlay.deinit() self.__debugTouchVisOverlay.unlink(True) del self.__debugTouchVisOverlay self.__debugTouchVisOverlay = None def __killNotifyNode(self): if self.__notifyNode: self.__notifyNode.unlink() self.__notifyNode = None def __screenshot(self): fnum = 0 fnameTemplate = 'screenshot-%03d.png' while os.path.exists(fnameTemplate % fnum): fnum += 1 try: g_Player.screenshot().save('screenshot-%03d.png' % fnum) except RuntimeError: text = 'Cannot save snapshot file' else: text = 'Screenshot saved as ' + fnameTemplate % fnum self.__killNotifyNode() self.__notifyNode = avg.WordsNode( text=text, x=g_Player.getRootNode().width - 50, y=g_Player.getRootNode().height - 50, alignment='right', fontsize=20, sensitive=False, parent=g_Player.getRootNode()) g_Player.setTimeout(2000, self.__killNotifyNode)
class AVGAppStarter(AppStarter): def __init__(self, *args, **kwargs): self.__graphs = [] self._mtEmu = None self.__memGraph = None self.__vidMemGraph = None self.__frGraph = None self.__notifyNode = None self.__debugTouchVisOverlay = None super(AVGAppStarter, self).__init__(*args, **kwargs) def _setupDefaultKeys(self): super(AVGAppStarter, self)._setupDefaultKeys() g_KbManager.bindKey('o', self.__dumpObjects, 'Dump objects') g_KbManager.bindKey('m', self.showMemoryUsage, 'Show memory usage graph') g_KbManager.bindKey('f', self.showFrameRate, 'Show framerate graph') g_KbManager.bindKey('t', self.__switchMtemu, 'Activate multitouch emulation') g_KbManager.bindKey('e', self.__switchShowMTEvents, 'Show multitouch events') g_KbManager.bindKey('s', self.__screenshot, 'Take screenshot') def _onStart(self): try: player.getVideoMemUsed() g_KbManager.bindKey('v', self.showVideoMemoryUsage, 'Show video memory usage graph') except RuntimeError: # Video memory query not supported. pass AppStarter._onStart(self) def __dumpObjects(self): gc.collect() testHelper = player.getTestHelper() testHelper.dumpObjects() print 'Num anims: ', avg.getNumRunningAnims() print 'Num python objects: ', len(gc.get_objects()) def showMemoryUsage(self): if self.__memGraph: self.__memGraph.unlink(True) self.__graphs.remove(self.__memGraph) self.__memGraph = None else: size = (self._appNode.width, self._appNode.height / 6.0) self.__memGraph = graph.AveragingGraph( title='Memory Usage', getValue=player.getMemoryUsage, parent=player.getRootNode(), size=size) self.__graphs.append(self.__memGraph) self.__positionGraphs() def showVideoMemoryUsage(self): if self.__vidMemGraph: self.__vidMemGraph.unlink(True) self.__graphs.remove(self.__vidMemGraph) self.__vidMemGraph = None else: size = (self._appNode.width, self._appNode.height / 6.0) self.__vidMemGraph = graph.AveragingGraph( title='Video Memory Usage', getValue=player.getVideoMemUsed, parent=player.getRootNode(), size=size) self.__graphs.append(self.__vidMemGraph) self.__positionGraphs() def showFrameRate(self): if self.__frGraph: self.__frGraph.unlink(True) self.__graphs.remove(self.__frGraph) self.__frGraph = None else: size = (self._appNode.width, self._appNode.height / 6.0) self.__frGraph = graph.SlidingGraph(title='Time per Frame', getValue=player.getFrameTime, parent=self._appNode, size=size) self.__graphs.append(self.__frGraph) self.__positionGraphs() def __positionGraphs(self): ypos = 10 for gr in self.__graphs: gr.y = ypos ypos += gr.height + 10 def __switchMtemu(self): if self._mtEmu is None: self._mtEmu = MTemu() g_KbManager.bindKey('left shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('right shift', self._mtEmu.toggleDualTouch, 'Toggle Multitouch Emulation') g_KbManager.bindKey('left ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') g_KbManager.bindKey('right ctrl', self._mtEmu.toggleSource, 'Toggle Touch Source') else: self._mtEmu.deinit() g_KbManager.unbindKey('left ctrl') g_KbManager.unbindKey('right ctrl') g_KbManager.unbindKey('left shift') g_KbManager.unbindKey('right shift') del self._mtEmu self._mtEmu = None def __switchShowMTEvents(self): if self.__debugTouchVisOverlay is None: rootNode = player.getRootNode() self.__debugTouchVisOverlay = apphelpers.TouchVisualizationOverlay( isDebug=True, visClass=apphelpers.DebugTouchVisualization, size=self._appNode.size, parent=rootNode) else: self.__debugTouchVisOverlay.unlink(True) del self.__debugTouchVisOverlay self.__debugTouchVisOverlay = None def __killNotifyNode(self): if self.__notifyNode: self.__notifyNode.unlink() self.__notifyNode = None def __screenshot(self): fnum = 0 fnameTemplate = 'screenshot-%03d.png' while os.path.exists(fnameTemplate % fnum): fnum += 1 try: player.screenshot().save('screenshot-%03d.png' % fnum) except RuntimeError: text = 'Cannot save snapshot file' else: text = 'Screenshot saved as ' + fnameTemplate % fnum self.__killNotifyNode() self.__notifyNode = avg.WordsNode(text=text, x=player.getRootNode().width - 50, y=player.getRootNode().height - 50, alignment='right', fontsize=20, sensitive=False, parent=player.getRootNode()) player.setTimeout(2000, self.__killNotifyNode)