Remove timeStep parameter from QAnimationDrive::advanceAnimation

This reverts commit 7544c242cb, which
reverted the first removal of the parameter under the assumption
that it caused flakiness in tests.

The flakiness was instead caused by changes to the wait functions
in QTest, so remove the parameter again.

Change-Id: I98154d5d7268375aebbcb09de757e75d9b765c5f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
bb10
Volker Hilsheimer 2020-10-12 17:14:41 +02:00
parent 4e10abb4c1
commit 044231c4d2
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.