QmlProfiler: unify client to simplemodel event calls

Change-Id: I1c3c1abbfd06c21498a0eb8f7c472d5f93f853cc
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Christiaan Janssen
2013-08-07 17:18:04 +02:00
parent 6a1832cd29
commit a06bd050df
10 changed files with 59 additions and 141 deletions

View File

@@ -170,7 +170,8 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
} else if (event == AnimationFrame) { } else if (event == AnimationFrame) {
int frameRate, animationCount; int frameRate, animationCount;
stream >> frameRate >> animationCount; stream >> frameRate >> animationCount;
emit this->frame(time, frameRate, animationCount); emit rangedEvent(QmlDebug::Painting, QmlDebug::AnimationFrame, time, 0,
QStringList(), QmlDebug::QmlEventLocation(), frameRate, animationCount, 0,0,0);
d->maximumTime = qMax(time, d->maximumTime); d->maximumTime = qMax(time, d->maximumTime);
} else if (event == StartTrace) { } else if (event == StartTrace) {
emit this->traceStarted(time); emit this->traceStarted(time);
@@ -192,21 +193,20 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
} }
while (count<5) while (count<5)
params[count++] = 0; params[count++] = 0;
emit sceneGraphFrame(SceneGraphFrameEvent, sgEventType, time, params[0], params[1], params[2], params[3], params[4]); emit rangedEvent(SceneGraphFrameEvent, sgEventType,time, 0, QStringList(),
QmlDebug::QmlEventLocation(), params[0], params[1], params[2], params[3], params[4]);
} else if (messageType == PixmapCacheEvent) { } else if (messageType == PixmapCacheEvent) {
int pixEvTy, width = -1, height = -1, refcount = -1; int pixEvTy, width = 0, height = 0, refcount = 0;
QString pixUrl; QString pixUrl;
stream >> pixEvTy >> pixUrl; stream >> pixEvTy >> pixUrl;
if (pixEvTy == (int)PixmapReferenceCountChanged || pixEvTy == (int)PixmapCacheCountChanged) { if (pixEvTy == (int)PixmapReferenceCountChanged || pixEvTy == (int)PixmapCacheCountChanged) {
stream >> refcount; stream >> refcount;
emit pixmapCacheEvent(time,pixEvTy, pixUrl, 0, 0, refcount); } else if (pixEvTy == (int)PixmapSizeKnown) {
} else stream >> width >> height;
if (pixEvTy == (int)PixmapSizeKnown) { refcount = 1;
stream >> width >> height; }
emit pixmapCacheEvent(time,pixEvTy, pixUrl, width, height, 1); emit rangedEvent(QmlDebug::PixmapCacheEvent, pixEvTy, time, 0, QStringList(),
} else { // Other QmlDebug::QmlEventLocation(pixUrl,0,0), width, height, refcount, 0, 0);
emit pixmapCacheEvent(time,pixEvTy, pixUrl, 0, 0, 0);
}
d->maximumTime = qMax(time, d->maximumTime); d->maximumTime = qMax(time, d->maximumTime);
} else { } else {
int range; int range;
@@ -269,7 +269,8 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data)
bindingType = d->bindingTypes.pop(); bindingType = d->bindingTypes.pop();
if ((QmlEventType)range == Painting) if ((QmlEventType)range == Painting)
bindingType = QPainterEvent; bindingType = QPainterEvent;
emit this->range((QmlEventType)range, bindingType, startTime, time - startTime, data, location); emit rangedEvent((QmlEventType)range, bindingType, startTime, time - startTime, data,
location, 0, 0, 0, 0, 0);
if (d->rangeCount[range] == 0) { if (d->rangeCount[range] == 0) {
int count = d->rangeDatas[range].count() + int count = d->rangeDatas[range].count() +
d->rangeStartTimes[range].count() + d->rangeStartTimes[range].count() +

View File

@@ -102,12 +102,9 @@ signals:
void event(int event, qint64 time); void event(int event, qint64 time);
void traceFinished( qint64 time ); void traceFinished( qint64 time );
void traceStarted( qint64 time ); void traceStarted( qint64 time );
void range(int type, int bindingType, qint64 startTime, qint64 length, void rangedEvent(int type, int bindingType, qint64 startTime, qint64 length,
const QStringList &data, const QmlDebug::QmlEventLocation &location); const QStringList &data, const QmlDebug::QmlEventLocation &location,
void frame(qint64 time, int frameRate, int animationCount); qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5);
void sceneGraphFrame(int eventType, int sgEventType, qint64 time, qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5);
void pixmapCacheEvent(qint64 time, int cacheEventType, const QString& url, int width, int height, int refCount);
void recordingChanged(bool arg); void recordingChanged(bool arg);
void enabledChanged(); void enabledChanged();

View File

@@ -179,23 +179,15 @@ void QmlProfilerClientManager::connectClientSignals()
connect(d->qmlclientplugin.data(), SIGNAL(complete()), connect(d->qmlclientplugin.data(), SIGNAL(complete()),
this, SLOT(qmlComplete())); this, SLOT(qmlComplete()));
connect(d->qmlclientplugin.data(), connect(d->qmlclientplugin.data(),
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)), SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
qint64,qint64,qint64,qint64,qint64)),
d->modelManager, d->modelManager,
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation))); SLOT(addQmlEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
qint64,qint64,qint64,qint64,qint64)));
connect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)), connect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
d->modelManager->traceTime(), SLOT(setEndTime(qint64))); d->modelManager->traceTime(), SLOT(setEndTime(qint64)));
connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)), connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
d->modelManager->traceTime(), SLOT(setStartTime(qint64))); d->modelManager->traceTime(), SLOT(setStartTime(qint64)));
connect(d->qmlclientplugin.data(), SIGNAL(frame(qint64,int,int)),
d->modelManager, SLOT(addFrameEvent(qint64,int,int)));
connect(d->qmlclientplugin.data(),
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
d->modelManager,
SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
connect(d->qmlclientplugin.data(),
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64)),
d->modelManager,
SLOT(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64)));
connect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()), connect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()),
d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); d->qmlclientplugin.data(), SLOT(sendRecordingStatus()));
// fixme: this should be unified for both clients // fixme: this should be unified for both clients
@@ -219,23 +211,17 @@ void QmlProfilerClientManager::disconnectClientSignals()
disconnect(d->qmlclientplugin.data(), SIGNAL(complete()), disconnect(d->qmlclientplugin.data(), SIGNAL(complete()),
this, SLOT(qmlComplete())); this, SLOT(qmlComplete()));
disconnect(d->qmlclientplugin.data(), disconnect(d->qmlclientplugin.data(),
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)), SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
qint64,qint64,qint64,qint64,qint64)),
d->modelManager, d->modelManager,
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation))); SLOT(addQmlEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
qint64,qint64,qint64,qint64,qint64)));
disconnect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)), disconnect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
d->modelManager->traceTime(), SLOT(setEndTime(qint64))); d->modelManager->traceTime(), SLOT(setEndTime(qint64)));
disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)), disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
d->modelManager->traceTime(), SLOT(setStartTime(qint64))); d->modelManager->traceTime(), SLOT(setStartTime(qint64)));
disconnect(d->qmlclientplugin.data(), SIGNAL(frame(qint64,int,int)), disconnect(d->qmlclientplugin.data(), SIGNAL(frame(qint64,int,int)),
d->modelManager, SLOT(addFrameEvent(qint64,int,int))); d->modelManager, SLOT(addFrameEvent(qint64,int,int)));
disconnect(d->qmlclientplugin.data(),
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
d->modelManager,
SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
disconnect(d->qmlclientplugin.data(),
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64,qint64)),
d->modelManager,
SLOT(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64,qint64)));
disconnect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()), disconnect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()),
d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); d->qmlclientplugin.data(), SLOT(sendRecordingStatus()));
// fixme: this should be unified for both clients // fixme: this should be unified for both clients

View File

@@ -225,14 +225,15 @@ void QmlProfilerModelManager::newTimeEstimation(qint64 estimation)
d->estimatedTime = estimation; d->estimatedTime = estimation;
} }
void QmlProfilerModelManager::addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location) void QmlProfilerModelManager::addQmlEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location,
qint64 ndata1, qint64 ndata2, qint64 ndata3, qint64 ndata4, qint64 ndata5)
{ {
// If trace start time was not explicitly set, use the first event // If trace start time was not explicitly set, use the first event
if (d->traceTime->startTime() == -1) if (d->traceTime->startTime() == -1)
d->traceTime->setStartTime(startTime); d->traceTime->setStartTime(startTime);
QTC_ASSERT(state() == QmlProfilerDataState::AcquiringData, /**/); QTC_ASSERT(state() == QmlProfilerDataState::AcquiringData, /**/);
d->model->addRangedEvent(type, bindingType, startTime, length, data, location); d->model->addQmlEvent(type, bindingType, startTime, length, data, location, ndata1, ndata2, ndata3, ndata4, ndata5);
emit countChanged(); emit countChanged();
} }
@@ -242,37 +243,6 @@ void QmlProfilerModelManager::addV8Event(int depth, const QString &function, con
d->v8Model->addV8Event(depth, function, filename, lineNumber,totalTime, selfTime); d->v8Model->addV8Event(depth, function, filename, lineNumber,totalTime, selfTime);
} }
void QmlProfilerModelManager::addFrameEvent(qint64 time, int framerate, int animationcount)
{
if (d->traceTime->startTime() == -1)
d->traceTime->setStartTime(time);
QTC_ASSERT(state() == QmlProfilerDataState::AcquiringData, /**/);
d->model->addFrameEvent(time, framerate, animationcount);
emit countChanged();
}
void QmlProfilerModelManager::addSceneGraphEvent(int eventType, int SGEtype, qint64 startTime, qint64 timing1, qint64 timing2, qint64 timing3, qint64 timing4, qint64 timing5)
{
if (d->traceTime->startTime() == -1)
d->traceTime->setStartTime(startTime);
QTC_ASSERT(state() == QmlProfilerDataState::AcquiringData, /**/);
d->model->addSceneGraphEvent(eventType, SGEtype, startTime, timing1, timing2, timing3, timing4, timing5);
emit countChanged();
}
void QmlProfilerModelManager::addPixmapCacheEvent(qint64 time, int pixmapEventType, QString Url, int pixmapWidth, int pixmapHeight, int referenceCount)
{
if (d->traceTime->startTime() == -1)
d->traceTime->setStartTime(time);
QTC_ASSERT(state() == QmlProfilerDataState::AcquiringData, /**/);
d->model->addPixmapCacheEvent(time, pixmapEventType, Url, pixmapWidth, pixmapHeight, referenceCount);
emit countChanged();
}
void QmlProfilerModelManager::complete() void QmlProfilerModelManager::complete()
{ {
if (state() == QmlProfilerDataState::AcquiringData) { if (state() == QmlProfilerDataState::AcquiringData) {
@@ -339,15 +309,12 @@ void QmlProfilerModelManager::load()
QmlProfilerFileReader reader; QmlProfilerFileReader reader;
connect(&reader, SIGNAL(error(QString)), this, SIGNAL(error(QString))); connect(&reader, SIGNAL(error(QString)), this, SIGNAL(error(QString)));
connect(&reader, SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)), this, connect(&reader, SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation))); qint64, qint64, qint64, qint64, qint64)),
this, SLOT(addQmlEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation,
qint64, qint64, qint64, qint64, qint64)));
connect(&reader, SIGNAL(traceStartTime(qint64)), traceTime(), SLOT(setStartTime(qint64))); connect(&reader, SIGNAL(traceStartTime(qint64)), traceTime(), SLOT(setStartTime(qint64)));
connect(&reader, SIGNAL(traceEndTime(qint64)), traceTime(), SLOT(setEndTime(qint64))); connect(&reader, SIGNAL(traceEndTime(qint64)), traceTime(), SLOT(setEndTime(qint64)));
connect(&reader, SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64)),
this, SLOT(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64)));
connect(&reader, SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
this, SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
connect(&reader, SIGNAL(frame(qint64,int,int)), this, SLOT(addFrameEvent(qint64,int,int)));
reader.setV8DataModel(d->v8Model); reader.setV8DataModel(d->v8Model);
reader.load(&file); reader.load(&file);

View File

@@ -126,17 +126,12 @@ public slots:
void clear(); void clear();
void prepareForWriting(); void prepareForWriting();
void addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, void addQmlEvent(int type, int bindingType, qint64 startTime, qint64 length,
const QStringList &data, const QmlDebug::QmlEventLocation &location); const QStringList &data, const QmlDebug::QmlEventLocation &location,
void addSceneGraphEvent(int eventType, int SGEtype, qint64 startTime, qint64 ndata1, qint64 ndata2, qint64 ndata3, qint64 ndata4, qint64 ndata5);
qint64 timing1, qint64 timing2, qint64 timing3, qint64 timing4, qint64 timing5);
void addPixmapCacheEvent(qint64 time, int pixmapEventType, QString Url,
int pixmapWidth, int pixmapHeight, int referenceCount);
void addV8Event(int depth, const QString &function,const QString &filename, int lineNumber, void addV8Event(int depth, const QString &function,const QString &filename, int lineNumber,
double totalTime, double selfTime); double totalTime, double selfTime);
void addFrameEvent(qint64 time, int framerate, int animationcount);
void complete(); void complete();
void save(const QString &filename); void save(const QString &filename);

View File

@@ -155,8 +155,13 @@ void PaintEventsModelProxy::loadData()
if (!eventAccepted(event)) if (!eventAccepted(event))
continue; continue;
qint64 estimatedDuration = 0;
// initial estimation of the event duration: 1/framerate
if (event.numericData1 > 0)
estimatedDuration = 1e9/event.numericData1;
// the profiler registers the animation events at the end of them // the profiler registers the animation events at the end of them
qint64 realStartTime = event.startTime - event.duration; qint64 realStartTime = event.startTime - estimatedDuration;
// the duration of the events is estimated from the framerate // the duration of the events is estimated from the framerate
// we need to correct it before appending a new event // we need to correct it before appending a new event
@@ -171,7 +176,7 @@ void PaintEventsModelProxy::loadData()
QmlPaintEventData newEvent = { QmlPaintEventData newEvent = {
realStartTime, realStartTime,
event.duration, estimatedDuration,
(int)event.numericData1, (int)event.numericData1,
(int)event.numericData2 (int)event.numericData2
}; };

View File

@@ -71,40 +71,23 @@ int QmlProfilerSimpleModel::count() const
return eventList.count(); return eventList.count();
} }
void QmlProfilerSimpleModel::addRangedEvent(int type, int bindingType, qint64 startTime, qint64 duration, const QStringList &data, const QmlDebug::QmlEventLocation &location) void QmlProfilerSimpleModel::addQmlEvent(int type, int bindingType, qint64 startTime, qint64 duration, const QStringList &data, const QmlDebug::QmlEventLocation &location, qint64 ndata1, qint64 ndata2, qint64 ndata3, qint64 ndata4, qint64 ndata5)
{ {
QString displayName = QString::fromLatin1("%1:%2").arg( QString displayName;
if (type == QmlDebug::Painting && bindingType == QmlDebug::AnimationFrame) {
displayName = tr("Animations");
} else {
displayName = QString::fromLatin1("%1:%2").arg(
location.filename, location.filename,
QString::number(location.line)); QString::number(location.line));
QmlEventData eventData = {displayName, type, bindingType, startTime, duration, data, location, 0, 0, 0, 0, 0}; }
QmlEventData eventData = {displayName, type, bindingType, startTime, duration, data, location, ndata1, ndata2, ndata3, ndata4, ndata5};
eventList.append(eventData); eventList.append(eventData);
m_modelManager->modelProxyCountUpdated(m_modelId, startTime, m_modelManager->estimatedProfilingTime()); m_modelManager->modelProxyCountUpdated(m_modelId, startTime, m_modelManager->estimatedProfilingTime());
} }
void QmlProfilerSimpleModel::addFrameEvent(qint64 time, int framerate, int animationcount)
{
qint64 duration = 1e9 / framerate;
QmlEventData eventData = {tr("Animations"), QmlDebug::Painting, QmlDebug::AnimationFrame, time, duration, QStringList(), QmlDebug::QmlEventLocation(), framerate, animationcount, 0, 0, 0};
eventList.append(eventData);
m_modelManager->modelProxyCountUpdated(m_modelId, time, m_modelManager->estimatedProfilingTime());
}
void QmlProfilerSimpleModel::addSceneGraphEvent(int eventType, int SGEtype, qint64 startTime, qint64 timing1, qint64 timing2, qint64 timing3, qint64 timing4, qint64 timing5)
{
QmlEventData eventData = {QString(), eventType, SGEtype, startTime, 0, QStringList(), QmlDebug::QmlEventLocation(), timing1, timing2, timing3, timing4, timing5};
eventList.append(eventData);
m_modelManager->modelProxyCountUpdated(m_modelId, startTime, m_modelManager->estimatedProfilingTime());
}
void QmlProfilerSimpleModel::addPixmapCacheEvent(qint64 time, int cacheEventType, const QString &url, int width, int height, int refCount)
{
QmlDebug::QmlEventLocation location(url, 0, 0);
QmlEventData eventData = {QString(), QmlDebug::PixmapCacheEvent, cacheEventType, time, 0, QStringList(), location, width, height, refCount, -1, -1};
eventList.append(eventData);
m_modelManager->modelProxyCountUpdated(m_modelId, time, m_modelManager->estimatedProfilingTime());
}
qint64 QmlProfilerSimpleModel::lastTimeMark() const qint64 QmlProfilerSimpleModel::lastTimeMark() const
{ {
if (eventList.isEmpty()) if (eventList.isEmpty())

View File

@@ -68,10 +68,8 @@ public:
bool isEmpty() const; bool isEmpty() const;
const QVector<QmlEventData> &getEvents() const; const QVector<QmlEventData> &getEvents() const;
int count() const; int count() const;
void addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location); void addQmlEvent(int type, int bindingType, qint64 startTime, qint64 duration, const QStringList &data, const QmlDebug::QmlEventLocation &location,
void addFrameEvent(qint64 time, int framerate, int animationcount); qint64 ndata1, qint64 ndata2, qint64 ndata3, qint64 ndata4, qint64 ndata5);
void addSceneGraphEvent(int eventType, int SGEtype, qint64 startTime, qint64 timing1, qint64 timing2, qint64 timing3, qint64 timing4, qint64 timing5);
void addPixmapCacheEvent(qint64 time, int cacheEventType, const QString& url, int width, int height, int refCount);
qint64 lastTimeMark() const; qint64 lastTimeMark() const;
virtual void complete(); virtual void complete();

View File

@@ -372,18 +372,11 @@ void QmlProfilerFileReader::processQmlEvents()
QmlEvent &event = m_qmlEvents[eventIndex]; QmlEvent &event = m_qmlEvents[eventIndex];
if (event.type == Painting && event.bindingType == QmlDebug::AnimationFrame) { emit rangedEvent(event.type, event.bindingType, range.startTime, range.duration,
emit frame(range.startTime, range.numericData1, range.numericData2); QStringList(event.displayName),
} else if (event.type == PixmapCacheEvent) { QmlEventLocation(event.filename, event.line, event.column),
emit pixmapCacheEvent(range.startTime, event.bindingType, event.filename, range.numericData1, range.numericData2, range.numericData3); range.numericData1,range.numericData2, range.numericData3, range.numericData4, range.numericData5);
} else if (event.type == SceneGraphFrameEvent) {
emit sceneGraphFrame(SceneGraphFrameEvent, event.bindingType, range.startTime, range.numericData1, range.numericData2, range.numericData3, range.numericData4, range.numericData5);
} else {
emit rangedEvent(event.type, event.bindingType, range.startTime, range.duration,
QStringList(event.displayName), QmlEventLocation(event.filename,
event.line,
event.column));
}
} }
} }
@@ -522,11 +515,6 @@ void QmlProfilerFileWriter::save(QIODevice *device)
if (range.numericData5 > 0) if (range.numericData5 > 0)
stream.writeAttribute(_("timing5"), QString::number(range.numericData5)); stream.writeAttribute(_("timing5"), QString::number(range.numericData5));
} }
// if (event.type == QmlDebug::Painting && range.animationCount >= 0) {
// // animation frame
// stream.writeAttribute(_("framerate"), QString::number(rangedEvent.frameRate));
// stream.writeAttribute(_("animationcount"), QString::number(rangedEvent.animationCount));
// }
stream.writeEndElement(); stream.writeEndElement();
} }
stream.writeEndElement(); // profilerDataModel stream.writeEndElement(); // profilerDataModel

View File

@@ -86,10 +86,8 @@ signals:
void traceEndTime(qint64 traceStartTime); void traceEndTime(qint64 traceStartTime);
void rangedEvent(int type, int bindingType, qint64 startTime, qint64 length, void rangedEvent(int type, int bindingType, qint64 startTime, qint64 length,
const QStringList &data, const QmlDebug::QmlEventLocation &location); const QStringList &data, const QmlDebug::QmlEventLocation &location,
void frame(qint64 time, int frameRate, int animationCount); qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5);
void sceneGraphFrame(int eventType, int sgEventType, qint64 time, qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5);
void pixmapCacheEvent(qint64 time, int cacheEventType, const QString& url, int width, int height, int refCount);
void error(const QString &error); void error(const QString &error);
private: private: