Index: tools/telemetry/telemetry/core/timeline/model.py |
diff --git a/tools/telemetry/telemetry/core/timeline/model.py b/tools/telemetry/telemetry/core/timeline/model.py |
index 762ddb15f1362ae5ee3431bca74f2fb738631fbd..7514c342eb7f0afa8f2f785f648c79f984fc215a 100644 |
--- a/tools/telemetry/telemetry/core/timeline/model.py |
+++ b/tools/telemetry/telemetry/core/timeline/model.py |
@@ -40,6 +40,7 @@ class MarkerOverlapError(Exception): |
class TimelineModel(object): |
def __init__(self, event_data=None, shift_world_to_zero=True): |
self._bounds = bounds.Bounds() |
+ self._thread_time_bounds = bounds.Bounds() |
self._processes = {} |
self._frozen = False |
self.import_errors = [] |
@@ -57,6 +58,10 @@ class TimelineModel(object): |
return self._bounds |
@property |
+ def thread_time_bounds(self): |
+ return self._thread_time_bounds |
+ |
+ @property |
def processes(self): |
return self._processes |
@@ -77,7 +82,8 @@ class TimelineModel(object): |
self.UpdateBounds() |
if not self.bounds.is_empty: |
for process in self._processes.itervalues(): |
- process.AutoCloseOpenSlices(self.bounds.max) |
+ process.AutoCloseOpenSlices(self.bounds.max, |
+ self.thread_time_bounds.max) |
for importer in importers: |
importer.FinalizeImport() |
@@ -97,15 +103,23 @@ class TimelineModel(object): |
self.UpdateBounds() |
if self._bounds.is_empty: |
return |
- shift_amount = -self._bounds.min |
+ shift_amount = self._bounds.min |
+ thread_shift_amount = self._thread_time_bounds.min |
for event in self.IterAllEvents(): |
- event.start += shift_amount |
+ event.start -= shift_amount |
+ if event.thread_start != None: |
+ event.thread_start -= thread_shift_amount |
def UpdateBounds(self): |
self._bounds.Reset() |
+ self._thread_time_bounds.Reset() |
for event in self.IterAllEvents(): |
self._bounds.AddValue(event.start) |
self._bounds.AddValue(event.end) |
+ if event.thread_start != None: |
+ self._thread_time_bounds.AddValue(event.thread_start) |
+ if event.thread_end != None: |
+ self._thread_time_bounds.AddValue(event.thread_end) |
def GetAllContainers(self): |
containers = [] |