aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger/qqmlprofilerservice_p.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@digia.com>2014-01-02 17:11:32 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-17 10:39:36 +0100
commit2f83ded7f7adf8ebfd4ae0479c4cca99ffe94a4e (patch)
treee3fa35396f5f7993df244d9c243b1687a2a7fa61 /src/qml/debugger/qqmlprofilerservice_p.h
parent717ae864d258568e3dc94cd2d43b7b9d6375a222 (diff)
Make sure QQmlVmeProfiler methods can be inlined
Move the definitions to the header and adapt the documentation. Task-number: QTBUG-35315 Change-Id: I511a192cfe1e3e09ade035175cb8f3f332022143 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/qml/debugger/qqmlprofilerservice_p.h')
-rw-r--r--src/qml/debugger/qqmlprofilerservice_p.h105
1 files changed, 95 insertions, 10 deletions
diff --git a/src/qml/debugger/qqmlprofilerservice_p.h b/src/qml/debugger/qqmlprofilerservice_p.h
index 86807eacec..1261597f1e 100644
--- a/src/qml/debugger/qqmlprofilerservice_p.h
+++ b/src/qml/debugger/qqmlprofilerservice_p.h
@@ -294,7 +294,13 @@ public:
int line;
int column;
QString typeName;
- void clear();
+ void clear()
+ {
+ url.clear();
+ line = 0;
+ column = 0;
+ typeName.clear();
+ }
};
QQmlVmeProfiler() :
@@ -307,19 +313,98 @@ public:
clear();
}
- void clear();
+ void clear()
+ {
+ stop();
+ ranges.clear();
+ if (QQmlProfilerService::enabled) {
+ for (int i = 0; i < backgroundRanges.count(); ++i) {
+ QQmlProfilerService::instance->endRange(QQmlProfilerService::Creating);
+ }
+ }
+ backgroundRanges.clear();
+ running = false;
+ }
- bool start();
- void stop();
+ bool start()
+ {
+ if (QQmlProfilerService::enabled) {
+ currentRange.clear();
+ if (running)
+ QQmlProfilerService::instance->endRange(QQmlProfilerService::Creating);
+ else
+ running = true;
+ QQmlProfilerService::instance->startRange(QQmlProfilerService::Creating);
+ return true;
+ }
+ return false;
+ }
- void updateLocation(const QUrl &url, int line, int column);
- void updateTypeName(const QString &typeName);
+ void stop()
+ {
+ if (QQmlProfilerService::enabled && running) {
+ QQmlProfilerService::instance->endRange(QQmlProfilerService::Creating);
+ currentRange.clear();
+ running = false;
+ }
+ }
- void pop();
- void push();
+ void updateLocation(const QUrl &url, int line, int column)
+ {
+ if (QQmlProfilerService::enabled && running) {
+ currentRange.url = url;
+ currentRange.line = line;
+ currentRange.column = column;
+ QQmlProfilerService::instance->rangeLocation(
+ QQmlProfilerService::Creating, url, line, column);
+ }
+ }
- void background();
- bool foreground();
+ void updateTypeName(const QString &typeName)
+ {
+ if (QQmlProfilerService::enabled && running) {
+ currentRange.typeName = typeName;
+ QQmlProfilerService::instance->rangeData(QQmlProfilerService::Creating, typeName);
+ }
+ }
+
+ bool pop()
+ {
+ if (QQmlProfilerService::enabled && ranges.count() > 0) {
+ start();
+ currentRange = ranges.pop();
+ QQmlProfilerService::instance->rangeLocation(
+ QQmlProfilerService::Creating, currentRange.url, currentRange.line, currentRange.column);
+ QQmlProfilerService::instance->rangeData(QQmlProfilerService::Creating, currentRange.typeName);
+ return true;
+ }
+ return false;
+ }
+
+ void push()
+ {
+ if (QQmlProfilerService::enabled && running)
+ ranges.push(currentRange);
+ }
+
+ void background()
+ {
+ if (QQmlProfilerService::enabled && running) {
+ backgroundRanges.push(currentRange);
+ running = false;
+ }
+ }
+
+ bool foreground()
+ {
+ if (QQmlProfilerService::enabled && backgroundRanges.count() > 0) {
+ stop();
+ currentRange = backgroundRanges.pop();
+ running = true;
+ return true;
+ }
+ return false;
+ }
private: