diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-15 15:41:29 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-01-18 07:57:56 +0000 |
commit | f644f86c84287065535fbd8c3478a5b2550437ac (patch) | |
tree | 54640dd88fa7e4cc3ce03b15d6ed3a7c2b005070 /src/quick/items/qquickitemanimation.cpp | |
parent | 1cbf064cdf6d24ddbb6bf30b08a88ec1bf03d3df (diff) |
Quick: fix expensive iteration over QHash::keys() and QMap::keys()
Change-Id: I21c48214bfddde01f71710705fe01418818a6581
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/quick/items/qquickitemanimation.cpp')
-rw-r--r-- | src/quick/items/qquickitemanimation.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/quick/items/qquickitemanimation.cpp b/src/quick/items/qquickitemanimation.cpp index 9d140b3156..da577d808a 100644 --- a/src/quick/items/qquickitemanimation.cpp +++ b/src/quick/items/qquickitemanimation.cpp @@ -836,12 +836,13 @@ QAbstractAnimationJob* QQuickPathAnimation::transition(QQuickStateActions &actio prevData = *d->activeAnimations[target]->pathUpdater(); } - QList<QQuickItem*> keys = d->activeAnimations.keys(); - foreach (QQuickItem *item, keys) { - QQuickPathAnimationAnimator *anim = d->activeAnimations.value(item); + for (auto it = d->activeAnimations.begin(); it != d->activeAnimations.end();) { + QQuickPathAnimationAnimator *anim = it.value(); if (anim->state() == QAbstractAnimationJob::Stopped) { anim->clearTemplate(); - d->activeAnimations.remove(item); + it = d->activeAnimations.erase(it); + } else { + ++it; } } |