blob: a02637f4a2769c39ba0757a04ecf018b9a34bfb2 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry.timeline import importer
from tracing.trace_data import trace_data as trace_data_module
class SurfaceFlingerTimelineImporter(importer.TimelineImporter):
def __init__(self, model, trace_data):
super(SurfaceFlingerTimelineImporter, self).__init__(
model, trace_data, import_order=2)
traces = trace_data.GetTracesFor(trace_data_module.SURFACE_FLINGER_PART)
assert len(traces) == 1
self._events = traces[0]
self._surface_flinger_process = None
@staticmethod
def GetSupportedPart():
return trace_data_module.SURFACE_FLINGER_PART
def ImportEvents(self):
for event in self._events:
self._surface_flinger_process = self._model.GetOrCreateProcess(
event['pid'])
self._surface_flinger_process.name = 'SurfaceFlinger'
thread = self._surface_flinger_process.GetOrCreateThread(event['tid'])
thread.BeginSlice(event['cat'],
event['name'],
event['ts'],
args=event.get('args'))
thread.EndSlice(event['ts'])
def FinalizeImport(self):
"""Called by the Model after all other importers have imported their
events."""
self._model.UpdateBounds()
self._model.surface_flinger_process = self._surface_flinger_process