diff options
-rw-r--r-- | src/quick/items/qquickspriteengine.cpp | 11 | ||||
-rw-r--r-- | src/quick/items/qquickspriteengine_p.h | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/quick/items/qquickspriteengine.cpp b/src/quick/items/qquickspriteengine.cpp index 10e0d51709..b1905f2cc5 100644 --- a/src/quick/items/qquickspriteengine.cpp +++ b/src/quick/items/qquickspriteengine.cpp @@ -664,13 +664,14 @@ uint QQuickStochasticEngine::updateSprites(uint time)//### would returning a lis //Sprite State Update; m_timeOffset = time; m_addAdvance = false; - while (!m_stateUpdates.isEmpty() && time >= m_stateUpdates.constFirst().first){ - const auto copy = m_stateUpdates.constFirst().second; + int i = 0; + for (; i < m_stateUpdates.count() && time >= m_stateUpdates.at(i).first; ++i) { + const auto copy = m_stateUpdates.at(i).second; for (int idx : copy) advance(idx); - m_stateUpdates.pop_front(); } + m_stateUpdates.remove(0, i); m_advanceTime.start(); m_addAdvance = true; if (m_stateUpdates.isEmpty()) @@ -760,13 +761,13 @@ void QQuickStochasticEngine::addToUpdateList(uint t, int idx) m_stateUpdates[i].second << idx; return; } else if (m_stateUpdates.at(i).first > t) { - QList<int> tmpList; + QVector<int> tmpList; tmpList << idx; m_stateUpdates.insert(i, qMakePair(t, tmpList)); return; } } - QList<int> tmpList; + QVector<int> tmpList; tmpList << idx; m_stateUpdates << qMakePair(t, tmpList); } diff --git a/src/quick/items/qquickspriteengine_p.h b/src/quick/items/qquickspriteengine_p.h index cf50cd2d84..3b7fcfb1f1 100644 --- a/src/quick/items/qquickspriteengine_p.h +++ b/src/quick/items/qquickspriteengine_p.h @@ -254,7 +254,7 @@ protected: QVector<int> m_goals; QVector<int> m_duration; QVector<int> m_startTimes; - QList<QPair<uint, QList<int> > > m_stateUpdates;//### This could be done faster - priority queue? + QVector<QPair<uint, QVector<int> > > m_stateUpdates;//### This could be done faster - priority queue? QTime m_advanceTime; uint m_timeOffset; |