From 2e4e7ed0032b1335a1dbc74be7d820ba6fc30e84 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Thu, 7 Apr 2011 23:27:39 +0300 Subject: more surface statistics? --- spicedump.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/spicedump.py b/spicedump.py index 90ca647..aac6ff3 100755 --- a/spicedump.py +++ b/spicedump.py @@ -35,12 +35,29 @@ def show(*line_sources): class SurfaceStatistics(object): def __init__(self): self.s = defaultdict(lambda: defaultdict(lambda: 0)) + self.current = set() + self.streams = set() + self.known_ops = dict(surface_create=self.on_surface_create, + surface_destroy=self.on_surface_destroy, + stream_create=self.on_stream_create) + def on_stream_create(self, sid): + self.streams.add(sid) + def on_surface_destroy(self, sid): + if sid in self.current: + self.current.remove(sid) + def on_surface_create(self, sid): + self.current.add(sid) def add(self, sid, op): self.s[sid][op] += 1 + if op not in self.known_ops: + import pdb; pdb.set_trace() + else: + self.known_ops[op](sid) def show(self): all_surfaces = self.s.keys() ds = self.s.values() ops = set(sum([d.keys() for d in ds], [])) + yield '%20s,%5s' % (len(self.current), len(self.streams)) per_surface = dict([(o, sorted(set([ sid for sid, d in self.s.items() if d[o] > 0 -- cgit v1.2.3