aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2015-07-27 16:04:24 +0200
committerUlf Hermann <ulf.hermann@theqtcompany.com>2015-09-15 15:25:21 +0000
commit0c955153454ab66fe9eedf189359b5c5ca307a2f (patch)
tree78d3f0bb96294bd91a6ea41e01a84089220ae1af
parent79adf5e2da6a22c908620f67a894be92c02c886d (diff)
Actively translate feature flags between QML and V4 profilers
Relying on the enums to be equal is somewhat dangerous. Change-Id: I0d5ebd37a2310b8916e521f7261bbf88786e712f Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp27
-rw-r--r--src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h10
-rw-r--r--src/qml/debugger/qqmlprofilerdefinitions_p.h4
3 files changed, 38 insertions, 3 deletions
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp
index 24e01f4c68..bb069bea25 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp
+++ b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.cpp
@@ -41,8 +41,12 @@ QV4ProfilerAdapter::QV4ProfilerAdapter(QQmlProfilerService *service, QV4::Execut
{
engine->enableProfiler();
connect(this, SIGNAL(profilingEnabled(quint64)),
- engine->profiler, SLOT(startProfiling(quint64)));
+ this, SLOT(forwardEnabled(quint64)));
connect(this, SIGNAL(profilingEnabledWhileWaiting(quint64)),
+ this, SLOT(forwardEnabledWhileWaiting(quint64)), Qt::DirectConnection);
+ connect(this, SIGNAL(v4ProfilingEnabled(quint64)),
+ engine->profiler, SLOT(startProfiling(quint64)));
+ connect(this, SIGNAL(v4ProfilingEnabledWhileWaiting(quint64)),
engine->profiler, SLOT(startProfiling(quint64)), Qt::DirectConnection);
connect(this, SIGNAL(profilingDisabled()), engine->profiler, SLOT(stopProfiling()));
connect(this, SIGNAL(profilingDisabledWhileWaiting()), engine->profiler, SLOT(stopProfiling()),
@@ -150,4 +154,25 @@ void QV4ProfilerAdapter::receiveData(
service->dataReady(this);
}
+quint64 QV4ProfilerAdapter::translateFeatures(quint64 qmlFeatures)
+{
+ quint64 v4Features = 0;
+ const quint64 one = 1;
+ if (qmlFeatures & (one << ProfileJavaScript))
+ v4Features |= (one << QV4::Profiling::FeatureFunctionCall);
+ if (qmlFeatures & (one << ProfileMemory))
+ v4Features |= (one << QV4::Profiling::FeatureMemoryAllocation);
+ return v4Features;
+}
+
+void QV4ProfilerAdapter::forwardEnabled(quint64 features)
+{
+ emit v4ProfilingEnabled(translateFeatures(features));
+}
+
+void QV4ProfilerAdapter::forwardEnabledWhileWaiting(quint64 features)
+{
+ emit v4ProfilingEnabledWhileWaiting(translateFeatures(features));
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h
index cea3da72e3..92122bed64 100644
--- a/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h
+++ b/src/plugins/qmltooling/qmldbg_profiler/qv4profileradapter.h
@@ -62,10 +62,18 @@ public:
virtual qint64 sendMessages(qint64 until, QList<QByteArray> &messages);
+signals:
+ void v4ProfilingEnabled(quint64 v4Features);
+ void v4ProfilingEnabledWhileWaiting(quint64 v4Features);
+
public slots:
void receiveData(const QVector<QV4::Profiling::FunctionCallProperties> &,
const QVector<QV4::Profiling::MemoryAllocationProperties> &);
+private slots:
+ void forwardEnabled(quint64 features);
+ void forwardEnabledWhileWaiting(quint64 features);
+
private:
QVector<QV4::Profiling::FunctionCallProperties> data;
QVector<QV4::Profiling::MemoryAllocationProperties> memory_data;
@@ -74,6 +82,8 @@ private:
QStack<qint64> stack;
qint64 appendMemoryEvents(qint64 until, QList<QByteArray> &messages);
qint64 finalizeMessages(qint64 until, QList<QByteArray> &messages, qint64 callNext);
+
+ static quint64 translateFeatures(quint64 qmlFeatures);
};
QT_END_NAMESPACE
diff --git a/src/qml/debugger/qqmlprofilerdefinitions_p.h b/src/qml/debugger/qqmlprofilerdefinitions_p.h
index 1213b67b3c..952eafed29 100644
--- a/src/qml/debugger/qqmlprofilerdefinitions_p.h
+++ b/src/qml/debugger/qqmlprofilerdefinitions_p.h
@@ -126,8 +126,8 @@ struct QQmlProfilerDefinitions {
typedef QV4::Profiling::MemoryType MemoryType;
enum ProfileFeature {
- ProfileJavaScript = QV4::Profiling::FeatureFunctionCall,
- ProfileMemory = QV4::Profiling::FeatureMemoryAllocation,
+ ProfileJavaScript,
+ ProfileMemory,
ProfilePixmapCache,
ProfileSceneGraph,
ProfileAnimations,