30 if (job->isRenderThreadJob()) {
31 static_cast<QQuickAnimatorJob *>(job)->invalidate();
32 }
else if (job->isGroup()) {
33 for (QAbstractAnimationJob *a : *
static_cast<QAnimationGroupJob *>(job)->children())
34 qquickanimator_invalidate_jobs(a);
38void QQuickAnimatorController::windowNodesDestroyed()
40 for (
const QSharedPointer<QAbstractAnimationJob> &toStop : std::as_const(m_rootsPendingStop)) {
41 qquickanimator_invalidate_jobs(toStop.data());
44 m_rootsPendingStop.clear();
48 const auto roots = m_animationRoots;
49 m_animationRoots.clear();
50 for (
const QSharedPointer<QAbstractAnimationJob> &job : roots) {
51 qquickanimator_invalidate_jobs(job.data());
56 m_rootsPendingStart.insert(job);
79 if (job->isRenderThreadJob()) {
80 static_cast<QQuickAnimatorJob *>(job)->preSync();
81 }
else if (job->isGroup()) {
82 for (QAbstractAnimationJob *a : *
static_cast<QAnimationGroupJob *>(job)->children())
83 qquickanimator_sync_before_start(a);
87void QQuickAnimatorController::beforeNodeSync()
89 for (
const QSharedPointer<QAbstractAnimationJob> &toStop : std::as_const(m_rootsPendingStop)) {
91 m_animationRoots.remove(toStop.data());
93 m_rootsPendingStop.clear();
96 for (QQuickAnimatorJob *job : std::as_const(m_runningAnimators))
100 for (
const QSharedPointer<QAbstractAnimationJob> &job : std::as_const(m_rootsPendingStart)) {
101 Q_ASSERT(!job->isRunning());
107 qquickanimator_sync_before_start(job.data());
111 m_animationRoots.insert(job.data(), job);
113 m_rootsPendingStart.clear();
116 if (m_animationRoots.size())
131void QQuickAnimatorController::animationStateChanged(QAbstractAnimationJob *job,
132 QAbstractAnimationJob::State newState,
133 QAbstractAnimationJob::State oldState)
135 Q_ASSERT(job->isRenderThreadJob());
136 QQuickAnimatorJob *animator =
static_cast<QQuickAnimatorJob *>(job);
137 if (newState == QAbstractAnimationJob::Running) {
138 m_runningAnimators.insert(animator);
139 }
else if (oldState == QAbstractAnimationJob::Running) {
141 m_runningAnimators.remove(animator);
158 j->addAnimationChangeListener(
this, QAbstractAnimationJob::StateChange);
167void QQuickAnimatorController::start(
const QSharedPointer<QAbstractAnimationJob> &job)
169 m_rootsPendingStart.insert(job);
170 m_rootsPendingStop.remove(job);
171 job->addAnimationChangeListener(
this, QAbstractAnimationJob::Completion);
172 start_helper(job.data());