QmlProfiler: manage server-side start tracing message

also
QmlProfiler: refactor eventlist state

If unexpected data is received, assuming server stopped profiling.
Also, introducing a eventlist state instead of relying on
signals sent around.  This is part of a coming bigger patch
where the profiler client is refactored.

Change-Id: Ibed9007903956daf03cc0fcb90f77b5ad2d3cf90
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
This commit is contained in:
Christiaan Janssen
2012-02-13 15:26:57 +01:00
parent de100a4add
commit 585e651310
15 changed files with 246 additions and 64 deletions

View File

@@ -89,6 +89,11 @@ QmlProfilerTraceClient::~QmlProfilerTraceClient()
void QmlProfilerTraceClient::clearData()
{
::memset(d->rangeCount, 0, MaximumQmlEventType * sizeof(int));
for (int eventType = 0; eventType < MaximumQmlEventType; eventType++) {
d->rangeDatas[eventType].clear();
d->rangeLocations[eventType].clear();
d->rangeStartTimes[eventType].clear();
}
emit cleared();
}
@@ -121,6 +126,14 @@ void QmlProfilerTraceClient::setRecording(bool v)
emit recordingChanged(v);
}
void QmlProfilerTraceClient::setRecordingFromServer(bool v)
{
if (v == d->recording)
return;
d->recording = v;
emit recordingChanged(v);
}
void QmlProfilerTraceClient::statusChanged(Status /*status*/)
{
emit enabledChanged();
@@ -136,8 +149,6 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
stream >> time >> messageType;
// qDebug() << __FUNCTION__ << messageType;
if (messageType >= MaximumMessage)
return;
@@ -158,6 +169,9 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
emit this->frame(time, frameRate, animationCount);
d->maximumTime = qMax(time, d->maximumTime);
} else if (event == StartTrace) {
// special: StartTrace is now asynchronous
if (!d->recording)
setRecordingFromServer(true);
emit this->traceStarted(time);
d->maximumTime = time;
} else if (event < MaximumEventType) {