Make sure animation drivers knows about the temporal offset after a pause
Change-Id: I932e469389241f6a12816b52180936f061cd78f8 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@nokia.com> Reviewed-by: J-P Nurmi <j-p.nurmi@nokia.com>
This commit is contained in:
parent
b6e4c859d3
commit
7226361aed
@ -317,6 +317,7 @@ void QUnifiedTimer::localRestart()
|
|||||||
} else if (!driver->isRunning()) {
|
} else if (!driver->isRunning()) {
|
||||||
if (pauseTimer.isActive())
|
if (pauseTimer.isActive())
|
||||||
pauseTimer.stop();
|
pauseTimer.stop();
|
||||||
|
driver->setStartTime(time.isValid() ? time.elapsed() : 0);
|
||||||
driver->start();
|
driver->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,6 +340,7 @@ void QUnifiedTimer::setTimingInterval(int interval)
|
|||||||
if (driver->isRunning() && !pauseTimer.isActive()) {
|
if (driver->isRunning() && !pauseTimer.isActive()) {
|
||||||
//we changed the timing interval
|
//we changed the timing interval
|
||||||
driver->stop();
|
driver->stop();
|
||||||
|
driver->setStartTime(time.isValid() ? time.elapsed() : 0);
|
||||||
driver->start();
|
driver->start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -477,6 +479,7 @@ void QUnifiedTimer::installAnimationDriver(QAnimationDriver *d)
|
|||||||
|
|
||||||
if (driver->isRunning()) {
|
if (driver->isRunning()) {
|
||||||
driver->stop();
|
driver->stop();
|
||||||
|
d->setStartTime(time.isValid() ? time.elapsed() : 0);
|
||||||
d->start();
|
d->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -495,6 +498,7 @@ void QUnifiedTimer::uninstallAnimationDriver(QAnimationDriver *d)
|
|||||||
|
|
||||||
if (d->isRunning()) {
|
if (d->isRunning()) {
|
||||||
d->stop();
|
d->stop();
|
||||||
|
driver->setStartTime(time.isValid() ? time.elapsed() : 0);
|
||||||
driver->start();
|
driver->start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -732,6 +736,28 @@ QAnimationDriver::~QAnimationDriver()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the time at which an animation driver should start at.
|
||||||
|
|
||||||
|
This is to take into account that pauses can occur in running
|
||||||
|
animations which will stop the driver, but the time still
|
||||||
|
increases.
|
||||||
|
*/
|
||||||
|
void QAnimationDriver::setStartTime(qint64 startTime)
|
||||||
|
{
|
||||||
|
Q_D(QAnimationDriver);
|
||||||
|
d->startTime = startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the start time of the animation.
|
||||||
|
*/
|
||||||
|
qint64 QAnimationDriver::startTime() const
|
||||||
|
{
|
||||||
|
Q_D(const QAnimationDriver);
|
||||||
|
return d->startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Advances the animation based to the specified \a timeStep. This function should
|
Advances the animation based to the specified \a timeStep. This function should
|
||||||
@ -821,6 +847,8 @@ void QAnimationDriver::stop()
|
|||||||
|
|
||||||
qint64 QAnimationDriver::elapsed() const
|
qint64 QAnimationDriver::elapsed() const
|
||||||
{
|
{
|
||||||
|
// The default implementation picks up the elapsed time from the
|
||||||
|
// unified timer and can ignore the time offset.
|
||||||
return QUnifiedTimer::instance()->time.elapsed();
|
return QUnifiedTimer::instance()->time.elapsed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,6 +151,9 @@ public:
|
|||||||
|
|
||||||
virtual qint64 elapsed() const;
|
virtual qint64 elapsed() const;
|
||||||
|
|
||||||
|
void setStartTime(qint64 startTime);
|
||||||
|
qint64 startTime() const;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void started();
|
void started();
|
||||||
void stopped();
|
void stopped();
|
||||||
|
@ -132,8 +132,9 @@ private:
|
|||||||
class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
|
class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QAnimationDriverPrivate() : running(false) {}
|
QAnimationDriverPrivate() : running(false), startTime(0) {}
|
||||||
bool running;
|
bool running;
|
||||||
|
qint64 startTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Q_CORE_EXPORT QAbstractAnimationTimer : public QObject
|
class Q_CORE_EXPORT QAbstractAnimationTimer : public QObject
|
||||||
|
Loading…
Reference in New Issue
Block a user