Revert "Remove timeStep parameter from QAnimationDrive::advanceAnimation"
This reverts commit f51b690e91bb2d7c8a03c5cef42abca37d97f8bb. The commit made all animation tests in qtdeclarative on macOS flaky. Change-Id: I4ccaa879df7e2ba7e253657de01cbabc9b2c655f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
e0918af700
commit
7544c242cb
@ -248,7 +248,7 @@ QUnifiedTimer *QUnifiedTimer::instance()
|
|||||||
void QUnifiedTimer::maybeUpdateAnimationsToCurrentTime()
|
void QUnifiedTimer::maybeUpdateAnimationsToCurrentTime()
|
||||||
{
|
{
|
||||||
if (elapsed() - lastTick > 50)
|
if (elapsed() - lastTick > 50)
|
||||||
updateAnimationTimers();
|
updateAnimationTimers(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 QUnifiedTimer::elapsed() const
|
qint64 QUnifiedTimer::elapsed() const
|
||||||
@ -290,13 +290,13 @@ void QUnifiedTimer::stopAnimationDriver()
|
|||||||
driver->stop();
|
driver->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QUnifiedTimer::updateAnimationTimers(qint64)
|
void QUnifiedTimer::updateAnimationTimers(qint64 currentTick)
|
||||||
{
|
{
|
||||||
//setCurrentTime can get this called again while we're the for loop. At least with pauseAnimations
|
//setCurrentTime can get this called again while we're the for loop. At least with pauseAnimations
|
||||||
if(insideTick)
|
if(insideTick)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const qint64 totalElapsed = elapsed();
|
qint64 totalElapsed = currentTick > 0 ? currentTick : elapsed();
|
||||||
|
|
||||||
// ignore consistentTiming in case the pause timer is active
|
// ignore consistentTiming in case the pause timer is active
|
||||||
qint64 delta = (consistentTiming && !pauseTimer.isActive()) ?
|
qint64 delta = (consistentTiming && !pauseTimer.isActive()) ?
|
||||||
@ -423,7 +423,7 @@ void QUnifiedTimer::timerEvent(QTimerEvent *event)
|
|||||||
|
|
||||||
if (event->timerId() == pauseTimer.timerId()) {
|
if (event->timerId() == pauseTimer.timerId()) {
|
||||||
// update current time on all timers
|
// update current time on all timers
|
||||||
updateAnimationTimers();
|
updateAnimationTimers(-1);
|
||||||
restart();
|
restart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,7 +585,7 @@ void QAnimationTimer::ensureTimerUpdate()
|
|||||||
QAnimationTimer *inst = QAnimationTimer::instance(false);
|
QAnimationTimer *inst = QAnimationTimer::instance(false);
|
||||||
QUnifiedTimer *instU = QUnifiedTimer::instance(false);
|
QUnifiedTimer *instU = QUnifiedTimer::instance(false);
|
||||||
if (instU && inst && inst->isPaused)
|
if (instU && inst && inst->isPaused)
|
||||||
instU->updateAnimationTimers();
|
instU->updateAnimationTimers(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QAnimationTimer::updateAnimationsTime(qint64 delta)
|
void QAnimationTimer::updateAnimationsTime(qint64 delta)
|
||||||
@ -773,19 +773,23 @@ QAnimationDriver::~QAnimationDriver()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Advances the animation. This function should be continuously called by
|
Advances the animation based to the specified \a timeStep. This function should
|
||||||
the driver subclasses while the animation is running.
|
be continuously called by the driver subclasses while the animation is running.
|
||||||
|
|
||||||
The calculation of the new current time will use elapsed() in combination
|
If \a timeStep is positive, it will be used as the current time in the
|
||||||
with the internal time offsets of the animation system.
|
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.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void QAnimationDriver::advanceAnimation()
|
void QAnimationDriver::advanceAnimation(qint64 timeStep)
|
||||||
{
|
{
|
||||||
QUnifiedTimer *instance = QUnifiedTimer::instance();
|
QUnifiedTimer *instance = QUnifiedTimer::instance();
|
||||||
|
|
||||||
// update current time on all top level animations
|
// update current time on all top level animations
|
||||||
instance->updateAnimationTimers();
|
instance->updateAnimationTimers(timeStep);
|
||||||
instance->restart();
|
instance->restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -798,7 +802,7 @@ void QAnimationDriver::advanceAnimation()
|
|||||||
|
|
||||||
void QAnimationDriver::advance()
|
void QAnimationDriver::advance()
|
||||||
{
|
{
|
||||||
advanceAnimation();
|
advanceAnimation(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,7 +152,8 @@ Q_SIGNALS:
|
|||||||
void stopped();
|
void stopped();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void advanceAnimation();
|
// ### Qt6: Remove timestep argument
|
||||||
|
void advanceAnimation(qint64 timeStep = -1);
|
||||||
virtual void start();
|
virtual void start();
|
||||||
virtual void stop();
|
virtual void stop();
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ public:
|
|||||||
|
|
||||||
void restart();
|
void restart();
|
||||||
void maybeUpdateAnimationsToCurrentTime();
|
void maybeUpdateAnimationsToCurrentTime();
|
||||||
void updateAnimationTimers(qint64 = -1); // ### Qt 6 - remove parameter once qtdeclarative is fixed
|
void updateAnimationTimers(qint64 currentTick);
|
||||||
|
|
||||||
//useful for profiling/debugging
|
//useful for profiling/debugging
|
||||||
int runningAnimationCount();
|
int runningAnimationCount();
|
||||||
|
@ -115,10 +115,10 @@ public:
|
|||||||
static const int interval = 1000/60;
|
static const int interval = 1000/60;
|
||||||
qint64 until = m_elapsed + ms;
|
qint64 until = m_elapsed + ms;
|
||||||
while (m_elapsed < until) {
|
while (m_elapsed < until) {
|
||||||
advanceAnimation();
|
advanceAnimation(m_elapsed);
|
||||||
m_elapsed += interval;
|
m_elapsed += interval;
|
||||||
}
|
}
|
||||||
advanceAnimation();
|
advanceAnimation(m_elapsed);
|
||||||
// This is to make sure that animations that were started with DeleteWhenStopped
|
// This is to make sure that animations that were started with DeleteWhenStopped
|
||||||
// will actually delete themselves within the test function.
|
// will actually delete themselves within the test function.
|
||||||
// Normally, they won't be deleted until the main event loop is processed.
|
// Normally, they won't be deleted until the main event loop is processed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user