From a28ebf1e0a8b0c30fb1b8062bd7e035cc0429476 Mon Sep 17 00:00:00 2001 From: Frank Meerkoetter Date: Fri, 1 Apr 2016 23:35:42 +0200 Subject: Replace QPODVector with a std::vector in QAbstractAnimationJob QAbstractAnimationJob::ChangeListener was not a POD type in the first place. The goal is to get rid of QPODVector altogether. Change-Id: Ia04d281d59b9691868a9ce563d2f2794d9db898b Reviewed-by: Shawn Rutledge --- src/qml/animations/qabstractanimationjob.cpp | 21 +++++++++------------ src/qml/animations/qabstractanimationjob_p.h | 4 ++-- 2 files changed, 11 insertions(+), 14 deletions(-) (limited to 'src/qml/animations') diff --git a/src/qml/animations/qabstractanimationjob.cpp b/src/qml/animations/qabstractanimationjob.cpp index 4bd02c1934..f7f6939e4b 100644 --- a/src/qml/animations/qabstractanimationjob.cpp +++ b/src/qml/animations/qabstractanimationjob.cpp @@ -588,8 +588,7 @@ void QAbstractAnimationJob::updateDirection(QAbstractAnimationJob::Direction dir void QAbstractAnimationJob::finished() { //TODO: update this code so it is valid to delete the animation in animationFinished - for (int i = 0; i < changeListeners.count(); ++i) { - const QAbstractAnimationJob::ChangeListener &change = changeListeners.at(i); + for (const auto &change : changeListeners) { if (change.types & QAbstractAnimationJob::Completion) { RETURN_IF_DELETED(change.listener->animationFinished(this)); } @@ -603,8 +602,7 @@ void QAbstractAnimationJob::finished() void QAbstractAnimationJob::stateChanged(QAbstractAnimationJob::State newState, QAbstractAnimationJob::State oldState) { - for (int i = 0; i < changeListeners.count(); ++i) { - const QAbstractAnimationJob::ChangeListener &change = changeListeners.at(i); + for (const auto &change : changeListeners) { if (change.types & QAbstractAnimationJob::StateChange) { RETURN_IF_DELETED(change.listener->animationStateChanged(this, newState, oldState)); } @@ -613,8 +611,7 @@ void QAbstractAnimationJob::stateChanged(QAbstractAnimationJob::State newState, void QAbstractAnimationJob::currentLoopChanged() { - for (int i = 0; i < changeListeners.count(); ++i) { - const QAbstractAnimationJob::ChangeListener &change = changeListeners.at(i); + for (const auto &change : changeListeners) { if (change.types & QAbstractAnimationJob::CurrentLoop) { RETURN_IF_DELETED(change.listener->animationCurrentLoopChanged(this)); } @@ -625,8 +622,7 @@ void QAbstractAnimationJob::currentTimeChanged(int currentTime) { Q_ASSERT(m_hasCurrentTimeChangeListeners); - for (int i = 0; i < changeListeners.count(); ++i) { - const QAbstractAnimationJob::ChangeListener &change = changeListeners.at(i); + for (const auto &change : changeListeners) { if (change.types & QAbstractAnimationJob::CurrentTime) { RETURN_IF_DELETED(change.listener->animationCurrentTimeChanged(this, currentTime)); } @@ -638,17 +634,18 @@ void QAbstractAnimationJob::addAnimationChangeListener(QAnimationJobChangeListen if (changes & QAbstractAnimationJob::CurrentTime) m_hasCurrentTimeChangeListeners = true; - changeListeners.append(ChangeListener(listener, changes)); + changeListeners.push_back(ChangeListener(listener, changes)); } void QAbstractAnimationJob::removeAnimationChangeListener(QAnimationJobChangeListener *listener, QAbstractAnimationJob::ChangeTypes changes) { m_hasCurrentTimeChangeListeners = false; - changeListeners.removeOne(ChangeListener(listener, changes)); + const auto it = std::find(changeListeners.begin(), changeListeners.end(), ChangeListener(listener, changes)); + if (it != changeListeners.end()) + changeListeners.erase(it); - for (int i = 0; i < changeListeners.count(); ++i) { - const QAbstractAnimationJob::ChangeListener &change = changeListeners.at(i); + for (const auto &change: changeListeners) { if (change.types & QAbstractAnimationJob::CurrentTime) { m_hasCurrentTimeChangeListeners = true; break; diff --git a/src/qml/animations/qabstractanimationjob_p.h b/src/qml/animations/qabstractanimationjob_p.h index b04f523585..efc86a5823 100644 --- a/src/qml/animations/qabstractanimationjob_p.h +++ b/src/qml/animations/qabstractanimationjob_p.h @@ -54,7 +54,7 @@ #include #include #include -#include "private/qpodvector_p.h" +#include QT_BEGIN_NAMESPACE @@ -164,7 +164,7 @@ protected: QAbstractAnimationJob::ChangeTypes types; bool operator==(const ChangeListener &other) const { return listener == other.listener && types == other.types; } }; - QPODVector changeListeners; + std::vector changeListeners; QAbstractAnimationJob *m_nextSibling; QAbstractAnimationJob *m_previousSibling; -- cgit v1.2.3