Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
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)
Пример #4
0
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)