Remove timeStep parameter from QAnimationDrive::advanceAnimation

Addresses ### Qt 6 comment, and documentation pointing out that the parameter
value is ignored. It wasn't ignored in the code, but that's the kind of change
we can make now.

With this change, QUnifiedTimer::updateAnimationTimers is only called with -1
as the currentTick input parameter, also from Qt Declarative. Make it default,
so that leaf modules can be fixed. Once that it done, the parameter can be
removed completely.

Change-Id: I80c57ff92f3b615b932dd73d711cf6397347efd8
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-09-02 10:42:47 +02:00
parent 21de5aa1ac
commit f51b690e91
4 changed files with 16 additions and 21 deletions

View File

@ -248,7 +248,7 @@ QUnifiedTimer *QUnifiedTimer::instance()
void QUnifiedTimer::maybeUpdateAnimationsToCurrentTime()
{
if (elapsed() - lastTick > 50)
updateAnimationTimers(-1);
updateAnimationTimers();
}
qint64 QUnifiedTimer::elapsed() const
@ -290,13 +290,13 @@ void QUnifiedTimer::stopAnimationDriver()
driver->stop();
}
void QUnifiedTimer::updateAnimationTimers(qint64 currentTick)
void QUnifiedTimer::updateAnimationTimers(qint64)
{
//setCurrentTime can get this called again while we're the for loop. At least with pauseAnimations
if(insideTick)
return;
qint64 totalElapsed = currentTick > 0 ? currentTick : elapsed();
const qint64 totalElapsed = elapsed();
// ignore consistentTiming in case the pause timer is active
qint64 delta = (consistentTiming && !pauseTimer.isActive()) ?
@ -423,7 +423,7 @@ void QUnifiedTimer::timerEvent(QTimerEvent *event)
if (event->timerId() == pauseTimer.timerId()) {
// update current time on all timers
updateAnimationTimers(-1);
updateAnimationTimers();
restart();
}
}
@ -585,7 +585,7 @@ void QAnimationTimer::ensureTimerUpdate()
QAnimationTimer *inst = QAnimationTimer::instance(false);
QUnifiedTimer *instU = QUnifiedTimer::instance(false);
if (instU && inst && inst->isPaused)
instU->updateAnimationTimers(-1);
instU->updateAnimationTimers();
}
void QAnimationTimer::updateAnimationsTime(qint64 delta)
@ -773,23 +773,19 @@ QAnimationDriver::~QAnimationDriver()
}
/*!
Advances the animation based to the specified \a timeStep. This function should
be continuously called by the driver subclasses while the animation is running.
Advances the animation. This function should be continuously called by
the driver subclasses while the animation is running.
If \a timeStep is positive, it will be used as the current time in the
calculations; otherwise, the current clock time will be used.
Since 5.4, the timeStep argument is ignored and elapsed() will be
used instead in combination with the internal time offsets of the
animation system.
The calculation of the new current time will use elapsed() in combination
with the internal time offsets of the animation system.
*/
void QAnimationDriver::advanceAnimation(qint64 timeStep)
void QAnimationDriver::advanceAnimation()
{
QUnifiedTimer *instance = QUnifiedTimer::instance();
// update current time on all top level animations
instance->updateAnimationTimers(timeStep);
instance->updateAnimationTimers();
instance->restart();
}
@ -802,7 +798,7 @@ void QAnimationDriver::advanceAnimation(qint64 timeStep)
void QAnimationDriver::advance()
{
advanceAnimation(-1);
advanceAnimation();
}

View File

@ -152,8 +152,7 @@ Q_SIGNALS:
void stopped();
protected:
// ### Qt6: Remove timestep argument
void advanceAnimation(qint64 timeStep = -1);
void advanceAnimation();
virtual void start();
virtual void stop();

View File

@ -185,7 +185,7 @@ public:
void restart();
void maybeUpdateAnimationsToCurrentTime();
void updateAnimationTimers(qint64 currentTick);
void updateAnimationTimers(qint64 = -1); // ### Qt 6 - remove parameter once qtdeclarative is fixed
//useful for profiling/debugging
int runningAnimationCount();

View File

@ -115,10 +115,10 @@ public:
static const int interval = 1000/60;
qint64 until = m_elapsed + ms;
while (m_elapsed < until) {
advanceAnimation(m_elapsed);
advanceAnimation();
m_elapsed += interval;
}
advanceAnimation(m_elapsed);
advanceAnimation();
// This is to make sure that animations that were started with DeleteWhenStopped
// will actually delete themselves within the test function.
// Normally, they won't be deleted until the main event loop is processed.