diff options
author | Christiaan Janssen <christiaan.janssen@nokia.com> | 2011-10-07 14:51:07 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-11 13:21:14 +0200 |
commit | 483b85ab599d5cee7614a84b6c73e275076bd52f (patch) | |
tree | 5b4cbf6692293c71138eafabe9f1c15f2fb4e720 /src | |
parent | ae271cbe7867f8eec9d8382e91d4c026453fb1de (diff) |
QmlProfiler: tracking animations
Change-Id: I78fa5ed5385dfe1715c9d05a5e63eb7185870e61
Reviewed-on: http://codereview.qt-project.org/6254
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/debugger/qdeclarativedebugtrace.cpp | 50 | ||||
-rw-r--r-- | src/declarative/debugger/qdeclarativedebugtrace_p.h | 6 |
2 files changed, 49 insertions, 7 deletions
diff --git a/src/declarative/debugger/qdeclarativedebugtrace.cpp b/src/declarative/debugger/qdeclarativedebugtrace.cpp index 76e4e23ff6..f9eb171b44 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace.cpp +++ b/src/declarative/debugger/qdeclarativedebugtrace.cpp @@ -47,6 +47,9 @@ #include <QtCore/qthread.h> #include <QtCore/qcoreapplication.h> +// this contains QUnifiedTimer +#include <private/qabstractanimation_p.h> + QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC(QDeclarativeDebugTrace, traceInstance); @@ -64,6 +67,9 @@ QByteArray QDeclarativeDebugData::toByteArray() const ds << detailData; if (messageType == (int)QDeclarativeDebugTrace::RangeLocation) ds << detailData << line; + if (messageType == (int)QDeclarativeDebugTrace::Event && + detailType == (int)QDeclarativeDebugTrace::AnimationFrame) + ds << framerate << animationcount; return data; } @@ -76,9 +82,17 @@ QDeclarativeDebugTrace::QDeclarativeDebugTrace() // wait for first message indicating whether to trace or not while (!m_messageReceived) waitForMessage(); + + QUnifiedTimer::instance()->registerProfilerCallback( &animationFrame ); } } +QDeclarativeDebugTrace::~QDeclarativeDebugTrace() +{ + // unregister the callback + QUnifiedTimer::instance()->registerProfilerCallback( 0 ); +} + void QDeclarativeDebugTrace::addEngine(QDeclarativeEngine * /*engine*/) { // just make sure that the service is properly registered @@ -87,6 +101,7 @@ void QDeclarativeDebugTrace::addEngine(QDeclarativeEngine * /*engine*/) void QDeclarativeDebugTrace::removeEngine(QDeclarativeEngine */*engine*/) { + } void QDeclarativeDebugTrace::addEvent(EventType t) @@ -131,12 +146,18 @@ void QDeclarativeDebugTrace::endRange(RangeType t) traceInstance()->endRangeImpl(t); } +void QDeclarativeDebugTrace::animationFrame(qint64 delta) +{ + Q_ASSERT(QDeclarativeDebugService::isDebuggingEnabled()); + traceInstance()->animationFrameImpl(delta); +} + void QDeclarativeDebugTrace::addEventImpl(EventType event) { if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData ed = {m_timer.nsecsElapsed(), (int)Event, (int)event, QString(), -1}; + QDeclarativeDebugData ed = {m_timer.nsecsElapsed(), (int)Event, (int)event, QString(), -1, 0, 0}; processMessage(ed); } @@ -145,7 +166,7 @@ void QDeclarativeDebugTrace::startRangeImpl(RangeType range) if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeStart, (int)range, QString(), -1}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeStart, (int)range, QString(), -1, 0, 0}; processMessage(rd); } @@ -154,7 +175,7 @@ void QDeclarativeDebugTrace::rangeDataImpl(RangeType range, const QString &rData if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData, -1}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData, -1, 0, 0}; processMessage(rd); } @@ -163,7 +184,7 @@ void QDeclarativeDebugTrace::rangeDataImpl(RangeType range, const QUrl &rData) if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData.toString(QUrl::FormattingOption(0x100)), -1}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeData, (int)range, rData.toString(QUrl::FormattingOption(0x100)), -1, 0, 0}; processMessage(rd); } @@ -172,7 +193,7 @@ void QDeclarativeDebugTrace::rangeLocationImpl(RangeType range, const QString &f if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName, line}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName, line, 0, 0}; processMessage(rd); } @@ -181,7 +202,7 @@ void QDeclarativeDebugTrace::rangeLocationImpl(RangeType range, const QUrl &file if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName.toString(QUrl::FormattingOption(0x100)), line}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeLocation, (int)range, fileName.toString(QUrl::FormattingOption(0x100)), line, 0, 0}; processMessage(rd); } @@ -190,10 +211,25 @@ void QDeclarativeDebugTrace::endRangeImpl(RangeType range) if (status() != Enabled || !m_enabled) return; - QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeEnd, (int)range, QString(), -1}; + QDeclarativeDebugData rd = {m_timer.nsecsElapsed(), (int)RangeEnd, (int)range, QString(), -1, 0, 0}; processMessage(rd); } +void QDeclarativeDebugTrace::animationFrameImpl(qint64 delta) +{ + if (status() != Enabled || !m_enabled) + return; + + int animCount = QUnifiedTimer::instance()->runningAnimationCount(); + + if (animCount > 0 && delta > 0) { + // trim fps to integer + int fps = 1000 / delta; + QDeclarativeDebugData ed = {m_timer.nsecsElapsed(), (int)Event, (int)AnimationFrame, QString(), -1, fps, animCount}; + processMessage(ed); + } +} + /* Either send the message directly, or queue up a list of messages to send later (via sendMessages) diff --git a/src/declarative/debugger/qdeclarativedebugtrace_p.h b/src/declarative/debugger/qdeclarativedebugtrace_p.h index 06c4311b2b..7633c21abc 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace_p.h +++ b/src/declarative/debugger/qdeclarativedebugtrace_p.h @@ -70,6 +70,8 @@ struct QDeclarativeDebugData //### QString detailData; //used by RangeData and RangeLocation int line; //used by RangeLocation + int framerate; //used by animation events + int animationcount; //used by animation events QByteArray toByteArray() const; }; @@ -95,6 +97,7 @@ public: FramePaint, Mouse, Key, + AnimationFrame, MaximumEventType }; @@ -120,8 +123,10 @@ public: static void rangeLocation(RangeType, const QString &, int); static void rangeLocation(RangeType, const QUrl &, int); static void endRange(RangeType); + static void animationFrame(qint64); QDeclarativeDebugTrace(); + ~QDeclarativeDebugTrace(); protected: virtual void messageReceived(const QByteArray &); private: @@ -132,6 +137,7 @@ private: void rangeLocationImpl(RangeType, const QString &, int); void rangeLocationImpl(RangeType, const QUrl &, int); void endRangeImpl(RangeType); + void animationFrameImpl(qint64); void processMessage(const QDeclarativeDebugData &); void sendMessages(); QElapsedTimer m_timer; |