| Index: Source/devtools/front_end/timeline/TracingTimelineModel.js
|
| diff --git a/Source/devtools/front_end/timeline/TracingTimelineModel.js b/Source/devtools/front_end/timeline/TracingTimelineModel.js
|
| index 026b9d885945cc7730e26a8f250c75817e4882a3..9d707af8818bc97d71f8feb186ca42a79af3f5eb 100644
|
| --- a/Source/devtools/front_end/timeline/TracingTimelineModel.js
|
| +++ b/Source/devtools/front_end/timeline/TracingTimelineModel.js
|
| @@ -10,6 +10,7 @@ WebInspector.TracingTimelineModel = function(tracingModel)
|
| {
|
| this._tracingModel = tracingModel;
|
| this._mainThreadEvents = [];
|
| + this._inspectedTargetEvents = [];
|
| }
|
|
|
| WebInspector.TracingTimelineModel.RecordType = {
|
| @@ -87,20 +88,33 @@ WebInspector.TracingTimelineModel.RecordType = {
|
| LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl"
|
| };
|
|
|
| -
|
| WebInspector.TracingTimelineModel.prototype = {
|
| willStartRecordingTraceEvents: function()
|
| {
|
| this._mainThreadEvents = [];
|
| + this._inspectedTargetEvents = [];
|
| },
|
|
|
| didStopRecordingTraceEvents: function()
|
| {
|
| - var events = this._tracingModel.inspectedTargetEvents();
|
| + var events = this._tracingModel.devtoolsMetadataEvents();
|
| + events.sort(WebInspector.TracingModel.Event.compareStartTime);
|
| +
|
| this._resetProcessingState();
|
| - for (var i = 0, length = events.length; i < length; i++)
|
| - this._processEvent(events[i]);
|
| + for (var i = 0, length = events.length; i < length; i++) {
|
| + var event = events[i];
|
| + var process = event.thread.process();
|
| + var startTime = event.startTime;
|
| +
|
| + var endTime = Infinity;
|
| + if (i + 1 < length)
|
| + endTime = events[i + 1].startTime;
|
| +
|
| + process.sortedThreads().forEach(this._processThreadEvents.bind(this, startTime, endTime, event.thread));
|
| + }
|
| this._resetProcessingState();
|
| +
|
| + this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compareStartTime);
|
| },
|
|
|
| /**
|
| @@ -124,7 +138,7 @@ WebInspector.TracingTimelineModel.prototype = {
|
| */
|
| inspectedTargetEvents: function()
|
| {
|
| - return this._tracingModel.inspectedTargetEvents();
|
| + return this._inspectedTargetEvents;
|
| },
|
|
|
| /**
|
| @@ -151,6 +165,30 @@ WebInspector.TracingTimelineModel.prototype = {
|
| },
|
|
|
| /**
|
| + * @param {number} startTime
|
| + * @param {?number} endTime
|
| + * @param {!WebInspector.TracingModel.Thread} mainThread
|
| + * @param {!WebInspector.TracingModel.Thread} thread
|
| + */
|
| + _processThreadEvents: function(startTime, endTime, mainThread, thread)
|
| + {
|
| + var events = thread.events();
|
| + var length = events.length;
|
| + var i = events.lowerBound(startTime, function (time, event) { return time - event.startTime });
|
| +
|
| + this._eventStack = [];
|
| + for (; i < length; i++) {
|
| + var event = events[i];
|
| + if (endTime && event.startTime >= endTime)
|
| + break;
|
| + this._processEvent(event);
|
| + if (thread === mainThread)
|
| + this._mainThreadEvents.push(event);
|
| + this._inspectedTargetEvents.push(event);
|
| + }
|
| + },
|
| +
|
| + /**
|
| * @param {!WebInspector.TracingModel.Event} event
|
| */
|
| _processEvent: function(event)
|
| @@ -257,10 +295,6 @@ WebInspector.TracingTimelineModel.prototype = {
|
| this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
|
| break;
|
|
|
| - case recordTypes.TracingStartedInPage:
|
| - this._mainThread = event.thread;
|
| - break;
|
| -
|
| case recordTypes.Paint:
|
| case recordTypes.ScrollLayer:
|
| event.backendNodeId = event.args["data"]["nodeId"];
|
| @@ -293,8 +327,6 @@ WebInspector.TracingTimelineModel.prototype = {
|
| event.imageURL = paintImageEvent.imageURL;
|
| break;
|
| }
|
| - if (this._mainThread === event.thread)
|
| - this._mainThreadEvents.push(event);
|
| },
|
|
|
| /**
|
|
|