/usr/share/games/fretsonfire/game/Debug.py is in fretsonfire-game 1.3.110.dfsg2-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #####################################################################
# -*- coding: iso-8859-1 -*- #
# #
# Frets on Fire #
# Copyright (C) 2006 Sami Kyöstilä #
# #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation; either version 2 #
# of the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the Free Software #
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, #
# MA 02110-1301, USA. #
#####################################################################
from OpenGL.GL import *
from View import Layer
import gc
import threading
import Log
class DebugLayer(Layer):
"""A layer for showing some debug information."""
def __init__(self, engine):
self.engine = engine
#gc.set_debug(gc.DEBUG_LEAK)
def className(self, instance):
return str(instance.__class__).split(".")[1]
def render(self, visibility, topMost):
self.engine.view.setOrthogonalProjection(normalize = True)
try:
font = self.engine.data.font
scale = 0.0008
glColor3f(.25, 1, .25)
x, y = (.05, .05)
h = font.getHeight() * scale
font.render("Tasks:", (x, y), scale = scale)
for task in self.engine.tasks + self.engine.frameTasks:
font.render(self.className(task), (x + .1, y), scale = scale)
y += h
x, y = (.5, .05)
font.render("Layers:", (x, y), scale = scale)
for layer in self.engine.view.layers + self.engine.view.incoming + self.engine.view.outgoing + self.engine.view.visibility.keys():
font.render(self.className(layer), (x + .1, y), scale = scale)
y += h
x, y = (.05, .4)
font.render("Scenes:", (x, y), scale = scale)
if "world" in dir(self.engine.server):
for scene in self.engine.server.world.scenes:
font.render(self.className(scene), (x + .1, y), scale = scale)
y += h
x, y = (.5, .4)
font.render("Loaders:", (x, y), scale = scale)
for loader in self.engine.resource.loaders:
font.render(str(loader), (x + .1, y), scale = scale)
y += h
x, y = (.5, .55)
font.render("Input:", (x, y), scale = scale)
for listener in self.engine.input.mouseListeners + \
self.engine.input.keyListeners + \
self.engine.input.systemListeners + \
self.engine.input.priorityKeyListeners:
font.render(self.className(listener), (x + .1, y), scale = scale)
y += h
x, y = (.05, .55)
font.render("System:", (x, y), scale = scale)
font.render("%d threads" % threading.activeCount(), (x + .1, y), scale = scale)
y += h
font.render("%.2f fps" % self.engine.timer.fpsEstimate, (x + .1, y), scale = scale)
y += h
font.render("%d sessions, server %s" % (len(self.engine.sessions), self.engine.server and "on" or "off"), (x + .1, y), scale = scale)
#y += h
#font.render("%d gc objects" % len(gc.get_objects()), (x + .1, y), scale = scale)
#y += h
#font.render("%d collected" % gc.collect(), (x + .1, y), scale = scale)
finally:
self.engine.view.resetProjection()
def gcDump(self):
import World
before = len(gc.get_objects())
coll = gc.collect()
after = len(gc.get_objects())
Log.debug("%d GC objects collected, total %d -> %d." % (coll, before, after))
fn = "gcdump.txt"
f = open(fn, "w")
n = 0
gc.collect()
for obj in gc.garbage:
try:
print >>f, obj
n += 1
except:
pass
f.close()
Log.debug("Wrote a dump of %d GC garbage objects to %s." % (n, fn))
|