summaryrefslogtreecommitdiffstats
path: root/src/corelib/animation
diff options
context:
space:
mode:
authorChristiaan Janssen <christiaan.janssen@nokia.com>2011-10-07 14:58:50 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-10 15:04:22 +0200
commit56921b1f885152e338f726bc5042b479a54944c5 (patch)
tree77c86fff968ff14d7eaf16c9dc5bebdf499a609f /src/corelib/animation
parente5baaf05e8a24b18ea3dbbb937f13b4525334678 (diff)
QUnifiedTimer: Add callback for timer ticks. Used for profiling
Change-Id: Ia7cf823dee7f0b491db2f041d29cdfc0e385f18e Reviewed-on: http://codereview.qt-project.org/6253 Reviewed-by: Kai Koehne <kai.koehne@nokia.com> Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/corelib/animation')
-rw-r--r--src/corelib/animation/qabstractanimation.cpp10
-rw-r--r--src/corelib/animation/qabstractanimation_p.h3
2 files changed, 12 insertions, 1 deletions
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index fd63b25a76..830c5da6b6 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -168,7 +168,7 @@ Q_GLOBAL_STATIC(QThreadStorage<QUnifiedTimer *>, unifiedTimer)
QUnifiedTimer::QUnifiedTimer() :
QObject(), defaultDriver(this), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
currentAnimationIdx(0), insideTick(false), consistentTiming(false), slowMode(false),
- slowdownFactor(5.0f), isPauseTimerActive(false), runningLeafAnimations(0)
+ slowdownFactor(5.0f), isPauseTimerActive(false), runningLeafAnimations(0), profilerCallback(0)
{
time.invalidate();
driver = &defaultDriver;
@@ -234,12 +234,20 @@ void QUnifiedTimer::updateAnimationsTime(qint64 timeStep)
int elapsed = QAbstractAnimationPrivate::get(animation)->totalCurrentTime
+ (animation->direction() == QAbstractAnimation::Forward ? delta : -delta);
animation->setCurrentTime(elapsed);
+
+ if (profilerCallback)
+ profilerCallback(delta);
}
insideTick = false;
currentAnimationIdx = 0;
}
}
+void QUnifiedTimer::registerProfilerCallback(void (*cb)(qint64))
+{
+ profilerCallback = cb;
+}
+
void QUnifiedTimer::updateAnimationTimer()
{
QUnifiedTimer *inst = QUnifiedTimer::instance(false);
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index 1de1225e75..7e7571bc58 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -189,6 +189,7 @@ public:
//useful for profiling/debugging
int runningAnimationCount() { return animations.count(); }
+ void registerProfilerCallback(void (*cb)(qint64));
protected:
void timerEvent(QTimerEvent *);
@@ -231,6 +232,8 @@ private:
void unregisterRunningAnimation(QAbstractAnimation *animation);
int closestPauseAnimationTimeToFinish();
+
+ void (*profilerCallback)(qint64);
};
QT_END_NAMESPACE