diff options
-rw-r--r-- | libs/qmldebug/qmlprofilertraceclient.cpp | 25 | ||||
-rw-r--r-- | libs/qmldebug/qmlprofilertraceclient.h | 9 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilerclientmanager.cpp | 30 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilermodelmanager.cpp | 47 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilermodelmanager.h | 11 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilerpainteventsmodelproxy.cpp | 9 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilersimplemodel.cpp | 33 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilersimplemodel.h | 6 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilertracefile.cpp | 22 | ||||
-rw-r--r-- | plugins/qmlprofiler/qmlprofilertracefile.h | 6 |
10 files changed, 58 insertions, 140 deletions
diff --git a/libs/qmldebug/qmlprofilertraceclient.cpp b/libs/qmldebug/qmlprofilertraceclient.cpp index bd0337ca4a..b0824ddfdb 100644 --- a/libs/qmldebug/qmlprofilertraceclient.cpp +++ b/libs/qmldebug/qmlprofilertraceclient.cpp @@ -170,7 +170,8 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) } else if (event == AnimationFrame) { int 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); } else if (event == StartTrace) { emit this->traceStarted(time); @@ -192,21 +193,20 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) } while (count<5) 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) { - int pixEvTy, width = -1, height = -1, refcount = -1; + int pixEvTy, width = 0, height = 0, refcount = 0; QString pixUrl; stream >> pixEvTy >> pixUrl; if (pixEvTy == (int)PixmapReferenceCountChanged || pixEvTy == (int)PixmapCacheCountChanged) { stream >> refcount; - emit pixmapCacheEvent(time,pixEvTy, pixUrl, 0, 0, refcount); - } else - if (pixEvTy == (int)PixmapSizeKnown) { - stream >> width >> height; - emit pixmapCacheEvent(time,pixEvTy, pixUrl, width, height, 1); - } else { // Other - emit pixmapCacheEvent(time,pixEvTy, pixUrl, 0, 0, 0); - } + } else if (pixEvTy == (int)PixmapSizeKnown) { + stream >> width >> height; + refcount = 1; + } + emit rangedEvent(QmlDebug::PixmapCacheEvent, pixEvTy, time, 0, QStringList(), + QmlDebug::QmlEventLocation(pixUrl,0,0), width, height, refcount, 0, 0); d->maximumTime = qMax(time, d->maximumTime); } else { int range; @@ -269,7 +269,8 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) bindingType = d->bindingTypes.pop(); if ((QmlEventType)range == Painting) 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) { int count = d->rangeDatas[range].count() + d->rangeStartTimes[range].count() + diff --git a/libs/qmldebug/qmlprofilertraceclient.h b/libs/qmldebug/qmlprofilertraceclient.h index 21c7d4eae1..b8364c0ab0 100644 --- a/libs/qmldebug/qmlprofilertraceclient.h +++ b/libs/qmldebug/qmlprofilertraceclient.h @@ -102,12 +102,9 @@ signals: void event(int event, qint64 time); void traceFinished( qint64 time ); void traceStarted( qint64 time ); - void range(int type, int bindingType, qint64 startTime, qint64 length, - const QStringList &data, const QmlDebug::QmlEventLocation &location); - void frame(qint64 time, int frameRate, int animationCount); - 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 rangedEvent(int type, int bindingType, qint64 startTime, qint64 length, + const QStringList &data, const QmlDebug::QmlEventLocation &location, + qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5); void recordingChanged(bool arg); void enabledChanged(); diff --git a/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index e733daf86a..926a382ce7 100644 --- a/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -179,23 +179,15 @@ void QmlProfilerClientManager::connectClientSignals() connect(d->qmlclientplugin.data(), SIGNAL(complete()), this, SLOT(qmlComplete())); 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, - 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)), d->modelManager->traceTime(), SLOT(setEndTime(qint64))); connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(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()), d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); // fixme: this should be unified for both clients @@ -219,23 +211,17 @@ void QmlProfilerClientManager::disconnectClientSignals() disconnect(d->qmlclientplugin.data(), SIGNAL(complete()), this, SLOT(qmlComplete())); 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, - 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)), d->modelManager->traceTime(), SLOT(setEndTime(qint64))); disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)), d->modelManager->traceTime(), SLOT(setStartTime(qint64))); disconnect(d->qmlclientplugin.data(), SIGNAL(frame(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()), d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); // fixme: this should be unified for both clients diff --git a/plugins/qmlprofiler/qmlprofilermodelmanager.cpp b/plugins/qmlprofiler/qmlprofilermodelmanager.cpp index 078bdb5174..ab70bca78b 100644 --- a/plugins/qmlprofiler/qmlprofilermodelmanager.cpp +++ b/plugins/qmlprofiler/qmlprofilermodelmanager.cpp @@ -225,14 +225,15 @@ void QmlProfilerModelManager::newTimeEstimation(qint64 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 (d->traceTime->startTime() == -1) d->traceTime->setStartTime(startTime); 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(); } @@ -242,37 +243,6 @@ void QmlProfilerModelManager::addV8Event(int depth, const QString &function, con 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() { if (state() == QmlProfilerDataState::AcquiringData) { @@ -339,15 +309,12 @@ void QmlProfilerModelManager::load() QmlProfilerFileReader reader; connect(&reader, SIGNAL(error(QString)), this, SIGNAL(error(QString))); - connect(&reader, SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)), this, - SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation))); + connect(&reader, SIGNAL(rangedEvent(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(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.load(&file); diff --git a/plugins/qmlprofiler/qmlprofilermodelmanager.h b/plugins/qmlprofiler/qmlprofilermodelmanager.h index fb44cf1937..59f3b0e7d9 100644 --- a/plugins/qmlprofiler/qmlprofilermodelmanager.h +++ b/plugins/qmlprofiler/qmlprofilermodelmanager.h @@ -126,17 +126,12 @@ public slots: void clear(); void prepareForWriting(); - void addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, - const QStringList &data, const QmlDebug::QmlEventLocation &location); - void addSceneGraphEvent(int eventType, int SGEtype, qint64 startTime, - 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 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); void addV8Event(int depth, const QString &function,const QString &filename, int lineNumber, double totalTime, double selfTime); - void addFrameEvent(qint64 time, int framerate, int animationcount); - void complete(); void save(const QString &filename); diff --git a/plugins/qmlprofiler/qmlprofilerpainteventsmodelproxy.cpp b/plugins/qmlprofiler/qmlprofilerpainteventsmodelproxy.cpp index 9db131f771..9cc160b1a5 100644 --- a/plugins/qmlprofiler/qmlprofilerpainteventsmodelproxy.cpp +++ b/plugins/qmlprofiler/qmlprofilerpainteventsmodelproxy.cpp @@ -155,8 +155,13 @@ void PaintEventsModelProxy::loadData() if (!eventAccepted(event)) 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 - qint64 realStartTime = event.startTime - event.duration; + qint64 realStartTime = event.startTime - estimatedDuration; // the duration of the events is estimated from the framerate // we need to correct it before appending a new event @@ -171,7 +176,7 @@ void PaintEventsModelProxy::loadData() QmlPaintEventData newEvent = { realStartTime, - event.duration, + estimatedDuration, (int)event.numericData1, (int)event.numericData2 }; diff --git a/plugins/qmlprofiler/qmlprofilersimplemodel.cpp b/plugins/qmlprofiler/qmlprofilersimplemodel.cpp index c2fc59892a..21c78fd219 100644 --- a/plugins/qmlprofiler/qmlprofilersimplemodel.cpp +++ b/plugins/qmlprofiler/qmlprofilersimplemodel.cpp @@ -71,40 +71,23 @@ int QmlProfilerSimpleModel::count() const 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, QString::number(location.line)); - QmlEventData eventData = {displayName, type, bindingType, startTime, duration, data, location, 0, 0, 0, 0, 0}; - eventList.append(eventData); - - 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}; + QmlEventData eventData = {displayName, type, bindingType, startTime, duration, data, location, ndata1, ndata2, ndata3, ndata4, ndata5}; 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 { if (eventList.isEmpty()) diff --git a/plugins/qmlprofiler/qmlprofilersimplemodel.h b/plugins/qmlprofiler/qmlprofilersimplemodel.h index 26f27db5f0..2127a2bbcb 100644 --- a/plugins/qmlprofiler/qmlprofilersimplemodel.h +++ b/plugins/qmlprofiler/qmlprofilersimplemodel.h @@ -68,10 +68,8 @@ public: bool isEmpty() const; const QVector<QmlEventData> &getEvents() const; int count() const; - void addRangedEvent(int type, int bindingType, qint64 startTime, qint64 length, const QStringList &data, const QmlDebug::QmlEventLocation &location); - void addFrameEvent(qint64 time, int framerate, int animationcount); - 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); + void 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); qint64 lastTimeMark() const; virtual void complete(); diff --git a/plugins/qmlprofiler/qmlprofilertracefile.cpp b/plugins/qmlprofiler/qmlprofilertracefile.cpp index 52bc3816d3..c8405c3d3c 100644 --- a/plugins/qmlprofiler/qmlprofilertracefile.cpp +++ b/plugins/qmlprofiler/qmlprofilertracefile.cpp @@ -372,18 +372,11 @@ void QmlProfilerFileReader::processQmlEvents() QmlEvent &event = m_qmlEvents[eventIndex]; - if (event.type == Painting && event.bindingType == QmlDebug::AnimationFrame) { - emit frame(range.startTime, range.numericData1, range.numericData2); - } else if (event.type == PixmapCacheEvent) { - emit pixmapCacheEvent(range.startTime, event.bindingType, event.filename, range.numericData1, range.numericData2, range.numericData3); - } 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)); - } + emit rangedEvent(event.type, event.bindingType, range.startTime, range.duration, + QStringList(event.displayName), + QmlEventLocation(event.filename, event.line, event.column), + range.numericData1,range.numericData2, range.numericData3, range.numericData4, range.numericData5); + } } @@ -522,11 +515,6 @@ void QmlProfilerFileWriter::save(QIODevice *device) if (range.numericData5 > 0) 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(); // profilerDataModel diff --git a/plugins/qmlprofiler/qmlprofilertracefile.h b/plugins/qmlprofiler/qmlprofilertracefile.h index 7733c477a5..f4e1b71d10 100644 --- a/plugins/qmlprofiler/qmlprofilertracefile.h +++ b/plugins/qmlprofiler/qmlprofilertracefile.h @@ -86,10 +86,8 @@ signals: void traceEndTime(qint64 traceStartTime); void rangedEvent(int type, int bindingType, qint64 startTime, qint64 length, - const QStringList &data, const QmlDebug::QmlEventLocation &location); - void frame(qint64 time, int frameRate, int animationCount); - 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); + const QStringList &data, const QmlDebug::QmlEventLocation &location, + qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5); void error(const QString &error); private: |