d->m_parsingStatus = DoneStatus;
setObjectName("QmlProfilerEventStatistics");
- // todo: read from client
d->m_traceEndTime = 0;
}
d->m_v8EventList.clear();
d->m_v8parents.clear();
+ d->m_traceEndTime = 0;
emit countChanged();
}
}
}
+void QmlProfilerEventList::setTraceEndTime( qint64 time )
+{
+ d->m_traceEndTime = time;
+}
+
void QmlProfilerEventList::complete()
{
d->collectV8Statistics();
void setFilename(const QString &filename);
void load();
+ void setTraceEndTime( qint64 time );
+
private slots:
void postProcess();
void sortEndTimes();
int event;
stream >> event;
- if (event < MaximumEventType) {
+ if (event == EndTrace) {
+ emit this->traceFinished(time);
+ d->maximumTime = time;
+ } else if (event < MaximumEventType) {
emit this->event((EventType)event, time);
d->maximumTime = qMax(time, d->maximumTime);
}
FramePaint,
Mouse,
Key,
+ AnimationFrame,
+ EndTrace,
MaximumEventType
};
void complete();
void gap(qint64 time);
void event(int event, qint64 time);
+ void traceFinished( qint64 time );
void range(int type, qint64 startTime, qint64 length,
const QStringList &data, const QString &fileName, int line);
var width = canvas.canvasSize.width - xmargin;
var height = canvas.height - ymargin;
- var sumValue = qmlEventList.lastTimeMark() - qmlEventList.firstTimeMark();
+ var sumValue = qmlEventList.traceEndTime() - qmlEventList.traceStartTime();
var spacing = width / sumValue;
ctxt.fillStyle = "rgba(0,0,0,1)";
//### only draw those in range
for (var ii = 0; ii < qmlEventList.count(); ++ii) {
- var xx = (qmlEventList.getStartTime(ii) - qmlEventList.firstTimeMark()) * spacing + xmargin;
+ var xx = (qmlEventList.getStartTime(ii) - qmlEventList.traceStartTime()) * spacing + xmargin;
if (xx > region.x + region.width)
continue;
var width = canvas.canvasSize.width - xmargin;
- var sumValue = qmlEventList.lastTimeMark() - qmlEventList.firstTimeMark();
+ var sumValue = qmlEventList.traceEndTime() - qmlEventList.traceStartTime();
var spacing = sumValue / width;
return spacing;
}
&& selectedEventIndex > -1 && selectedEventIndex < eventCount) {
// re-center flickable if necessary
var xs = Plotter.xScale(canvas);
- var startTime = qmlEventList.firstTimeMark();
+ var startTime = qmlEventList.traceStartTime();
var eventStartTime = qmlEventList.getStartTime(selectedEventIndex);
var eventDuration = qmlEventList.getDuration(selectedEventIndex);
if (rangeMover.value + startTime > eventStartTime) {
root.clearAll();
if (eventCount > 1) {
root.progress = Math.min(1.0,
- (qmlEventList.lastTimeMark() - qmlEventList.firstTimeMark()) / root.elapsedTime * 1e-9 ) * 0.5;
+ (qmlEventList.traceEndTime() - qmlEventList.traceStartTime()) / root.elapsedTime * 1e-9 ) * 0.5;
} else
root.progress = 0;
}
height: flick.height + labels.y
anchors.left: flick.left
anchors.right: flick.right
- startTime: rangeMover.x * Plotter.xScale(canvas) + qmlEventList.firstTimeMark();
- endTime: (rangeMover.x + rangeMover.zoomWidth) * Plotter.xScale(canvas) + qmlEventList.firstTimeMark();
+ startTime: rangeMover.x * Plotter.xScale(canvas) + qmlEventList.traceStartTime();
+ endTime: (rangeMover.x + rangeMover.zoomWidth) * Plotter.xScale(canvas) + qmlEventList.traceStartTime();
}
function hideRangeDetails() {
m_eventList = new QmlProfilerEventList(this);
connect(this,SIGNAL(range(int,qint64,qint64,QStringList,QString,int)), m_eventList, SLOT(addRangedEvent(int,qint64,qint64,QStringList,QString,int)));
+ connect(this, SIGNAL(traceFinished(qint64)), m_eventList, SLOT(setTraceEndTime(qint64)));
connect(this,SIGNAL(viewUpdated()), m_eventList, SLOT(complete()));
m_view->rootContext()->setContextProperty("qmlEventList", m_eventList);
m_v8plugin = new QV8ProfilerClient(conn);
connect(m_v8plugin.data(), SIGNAL(complete()), this, SLOT(v8Complete()));
connect(m_v8plugin.data(), SIGNAL(v8range(int,QString,QString,int,double,double)), this, SIGNAL(v8range(int,QString,QString,int,double,double)));
+ connect(m_plugin.data(), SIGNAL(traceFinished(qint64)), this, SIGNAL(traceFinished(qint64)));
m_view->rootContext()->setContextProperty("connection", m_plugin.data());
m_view->setSource(QUrl("qrc:/qmlprofiler/MainView.qml"));
void gotoSourceLocation(const QString &fileUrl, int lineNumber);
void timeChanged(qreal newTime);
void range(int type, qint64 startTime, qint64 length, const QStringList &data, const QString &fileName, int line);
-
void v8range(int depth,const QString &function,const QString &filename,
int lineNumber, double totalTime, double selfTime);
+ void traceFinished(qint64);
void internalClearDisplay();
void jumpToPrev();