forked from qt-creator/qt-creator
QmlProfiler: reduced indirection when reading data from client
Change-Id: I0f562be79a7ea05a4c91b2836df7d55f1c4409d7 Reviewed-by: Christian Stenger <christian.stenger@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
@@ -40,6 +40,8 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include "qmlprofilermodelmanager.h"
|
||||||
|
|
||||||
using namespace QmlDebug;
|
using namespace QmlDebug;
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
|
|
||||||
@@ -70,6 +72,8 @@ public:
|
|||||||
|
|
||||||
bool v8DataReady;
|
bool v8DataReady;
|
||||||
bool qmlDataReady;
|
bool qmlDataReady;
|
||||||
|
|
||||||
|
QmlProfilerModelManager *modelManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
QmlProfilerClientManager::QmlProfilerClientManager(QObject *parent) :
|
QmlProfilerClientManager::QmlProfilerClientManager(QObject *parent) :
|
||||||
@@ -84,6 +88,8 @@ QmlProfilerClientManager::QmlProfilerClientManager(QObject *parent) :
|
|||||||
d->v8DataReady = false;
|
d->v8DataReady = false;
|
||||||
d->qmlDataReady = false;
|
d->qmlDataReady = false;
|
||||||
|
|
||||||
|
d->modelManager = 0;
|
||||||
|
|
||||||
d->connectionTimer.setInterval(200);
|
d->connectionTimer.setInterval(200);
|
||||||
connect(&d->connectionTimer, SIGNAL(timeout()), SLOT(tryToConnect()));
|
connect(&d->connectionTimer, SIGNAL(timeout()), SLOT(tryToConnect()));
|
||||||
}
|
}
|
||||||
@@ -97,6 +103,18 @@ QmlProfilerClientManager::~QmlProfilerClientManager()
|
|||||||
|
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QmlProfilerClientManager::setModelManager(QmlProfilerModelManager *m)
|
||||||
|
{
|
||||||
|
if (d->modelManager) {
|
||||||
|
disconnect(this,SIGNAL(dataReadyForProcessing()), d->modelManager, SLOT(complete()));
|
||||||
|
}
|
||||||
|
d->modelManager = m;
|
||||||
|
if (d->modelManager) {
|
||||||
|
connect(this,SIGNAL(dataReadyForProcessing()), d->modelManager, SLOT(complete()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
// Interface
|
// Interface
|
||||||
void QmlProfilerClientManager::setTcpConnection(QString host, quint64 port)
|
void QmlProfilerClientManager::setTcpConnection(QString host, quint64 port)
|
||||||
@@ -162,22 +180,22 @@ void QmlProfilerClientManager::connectClientSignals()
|
|||||||
this, SLOT(qmlComplete()));
|
this, SLOT(qmlComplete()));
|
||||||
connect(d->qmlclientplugin.data(),
|
connect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)),
|
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)));
|
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)));
|
||||||
connect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
|
connect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
|
||||||
this, SIGNAL(traceFinished(qint64)));
|
d->modelManager->traceTime(), SLOT(setEndTime(qint64)));
|
||||||
connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
|
connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
|
||||||
this, SIGNAL(traceStarted(qint64)));
|
d->modelManager->traceTime(), SLOT(setStartTime(qint64)));
|
||||||
connect(d->qmlclientplugin.data(), SIGNAL(frame(qint64,int,int)),
|
connect(d->qmlclientplugin.data(), SIGNAL(frame(qint64,int,int)),
|
||||||
this, SIGNAL(addFrameEvent(qint64,int,int)));
|
d->modelManager, SLOT(addFrameEvent(qint64,int,int)));
|
||||||
connect(d->qmlclientplugin.data(),
|
connect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
|
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
|
SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
|
||||||
connect(d->qmlclientplugin.data(),
|
connect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64)),
|
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64)));
|
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
|
||||||
@@ -188,8 +206,8 @@ void QmlProfilerClientManager::connectClientSignals()
|
|||||||
connect(d->v8clientplugin.data(), SIGNAL(complete()), this, SLOT(v8Complete()));
|
connect(d->v8clientplugin.data(), SIGNAL(complete()), this, SLOT(v8Complete()));
|
||||||
connect(d->v8clientplugin.data(),
|
connect(d->v8clientplugin.data(),
|
||||||
SIGNAL(v8range(int,QString,QString,int,double,double)),
|
SIGNAL(v8range(int,QString,QString,int,double,double)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addV8Event(int,QString,QString,int,double,double)));
|
SLOT(addV8Event(int,QString,QString,int,double,double)));
|
||||||
connect(d->v8clientplugin.data(), SIGNAL(enabledChanged()),
|
connect(d->v8clientplugin.data(), SIGNAL(enabledChanged()),
|
||||||
d->v8clientplugin.data(), SLOT(sendRecordingStatus()));
|
d->v8clientplugin.data(), SLOT(sendRecordingStatus()));
|
||||||
}
|
}
|
||||||
@@ -202,22 +220,22 @@ void QmlProfilerClientManager::disconnectClientSignals()
|
|||||||
this, SLOT(qmlComplete()));
|
this, SLOT(qmlComplete()));
|
||||||
disconnect(d->qmlclientplugin.data(),
|
disconnect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)),
|
SIGNAL(range(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)));
|
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)));
|
||||||
disconnect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
|
disconnect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)),
|
||||||
this, SIGNAL(traceFinished(qint64)));
|
d->modelManager->traceTime(), SLOT(setEndTime(qint64)));
|
||||||
disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
|
disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)),
|
||||||
this, SIGNAL(traceStarted(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)),
|
||||||
this, SIGNAL(addFrameEvent(qint64,int,int)));
|
d->modelManager, SLOT(addFrameEvent(qint64,int,int)));
|
||||||
disconnect(d->qmlclientplugin.data(),
|
disconnect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
|
SIGNAL(pixmapCacheEvent(qint64,int,QString,int,int,int)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
|
SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
|
||||||
disconnect(d->qmlclientplugin.data(),
|
disconnect(d->qmlclientplugin.data(),
|
||||||
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64,qint64)),
|
SIGNAL(sceneGraphFrame(int,int,qint64,qint64,qint64,qint64,qint64,qint64,qint64)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64,qint64)));
|
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
|
||||||
@@ -228,8 +246,8 @@ void QmlProfilerClientManager::disconnectClientSignals()
|
|||||||
disconnect(d->v8clientplugin.data(), SIGNAL(complete()), this, SLOT(v8Complete()));
|
disconnect(d->v8clientplugin.data(), SIGNAL(complete()), this, SLOT(v8Complete()));
|
||||||
disconnect(d->v8clientplugin.data(),
|
disconnect(d->v8clientplugin.data(),
|
||||||
SIGNAL(v8range(int,QString,QString,int,double,double)),
|
SIGNAL(v8range(int,QString,QString,int,double,double)),
|
||||||
this,
|
d->modelManager,
|
||||||
SIGNAL(addV8Event(int,QString,QString,int,double,double)));
|
SLOT(addV8Event(int,QString,QString,int,double,double)));
|
||||||
disconnect(d->v8clientplugin.data(), SIGNAL(enabledChanged()),
|
disconnect(d->v8clientplugin.data(), SIGNAL(enabledChanged()),
|
||||||
d->v8clientplugin.data(), SLOT(sendRecordingStatus()));
|
d->v8clientplugin.data(), SLOT(sendRecordingStatus()));
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,8 @@
|
|||||||
namespace QmlProfiler {
|
namespace QmlProfiler {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
class QmlProfilerModelManager;
|
||||||
|
|
||||||
class QmlProfilerClientManager : public QObject
|
class QmlProfilerClientManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -55,19 +57,11 @@ public:
|
|||||||
void discardPendingData();
|
void discardPendingData();
|
||||||
bool isConnected() const;
|
bool isConnected() const;
|
||||||
|
|
||||||
|
void setModelManager(QmlProfilerModelManager *m);
|
||||||
signals:
|
signals:
|
||||||
void connectionFailed();
|
void connectionFailed();
|
||||||
void connectionClosed();
|
void connectionClosed();
|
||||||
|
|
||||||
// data
|
|
||||||
void addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation);
|
|
||||||
void addV8Event(int,QString,QString,int,double,double);
|
|
||||||
void addFrameEvent(qint64,int,int);
|
|
||||||
void traceStarted(qint64);
|
|
||||||
void traceFinished(qint64);
|
|
||||||
void dataReadyForProcessing();
|
void dataReadyForProcessing();
|
||||||
void addSceneGraphEvent(int, int, qint64, qint64, qint64, qint64, qint64, qint64);
|
|
||||||
void addPixmapCacheEvent(qint64,int,QString,int,int,int);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void connectClient(quint16 port);
|
void connectClient(quint16 port);
|
||||||
|
@@ -149,27 +149,8 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
|
|||||||
d->m_profilerModelManager = new QmlProfilerModelManager(&d->m_projectFinder, this);
|
d->m_profilerModelManager = new QmlProfilerModelManager(&d->m_projectFinder, this);
|
||||||
connect(d->m_profilerModelManager, SIGNAL(stateChanged()), this, SLOT(profilerDataModelStateChanged()));
|
connect(d->m_profilerModelManager, SIGNAL(stateChanged()), this, SLOT(profilerDataModelStateChanged()));
|
||||||
connect(d->m_profilerModelManager, SIGNAL(error(QString)), this, SLOT(showErrorDialog(QString)));
|
connect(d->m_profilerModelManager, SIGNAL(error(QString)), this, SLOT(showErrorDialog(QString)));
|
||||||
connect(d->m_profilerConnections,
|
|
||||||
SIGNAL(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)),
|
|
||||||
d->m_profilerModelManager,
|
|
||||||
SLOT(addRangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation)));
|
|
||||||
connect(d->m_profilerConnections,
|
|
||||||
SIGNAL(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64)),
|
|
||||||
d->m_profilerModelManager,
|
|
||||||
SLOT(addSceneGraphEvent(int,int,qint64,qint64,qint64,qint64,qint64,qint64)));
|
|
||||||
connect(d->m_profilerConnections,
|
|
||||||
SIGNAL(addPixmapCacheEvent(qint64,int,QString,int,int,int)),
|
|
||||||
d->m_profilerModelManager,
|
|
||||||
SLOT(addPixmapCacheEvent(qint64,int,QString,int,int,int)));
|
|
||||||
connect(d->m_profilerConnections,
|
|
||||||
SIGNAL(addV8Event(int,QString,QString,int,double,double)),
|
|
||||||
d->m_profilerModelManager,
|
|
||||||
SLOT(addV8Event(int,QString,QString,int,double,double)));
|
|
||||||
connect(d->m_profilerConnections, SIGNAL(addFrameEvent(qint64,int,int)), d->m_profilerModelManager, SLOT(addFrameEvent(qint64,int,int)));
|
|
||||||
connect(d->m_profilerConnections, SIGNAL(traceStarted(qint64)), d->m_profilerModelManager->traceTime(), SLOT(setStartTime(qint64)));
|
|
||||||
connect(d->m_profilerConnections, SIGNAL(traceFinished(qint64)), d->m_profilerModelManager->traceTime(), SLOT(setEndTime(qint64)));
|
|
||||||
connect(d->m_profilerConnections, SIGNAL(dataReadyForProcessing()), d->m_profilerModelManager, SLOT(complete()));
|
|
||||||
|
|
||||||
|
d->m_profilerConnections->setModelManager(d->m_profilerModelManager);
|
||||||
Command *command = 0;
|
Command *command = 0;
|
||||||
const Context globalContext(C_GLOBAL);
|
const Context globalContext(C_GLOBAL);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user