diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/particles/qsgitemparticle.cpp | 4 | ||||
-rw-r--r-- | src/declarative/particles/qsgmodelparticle.cpp | 22 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/declarative/particles/qsgitemparticle.cpp b/src/declarative/particles/qsgitemparticle.cpp index 498dd90a87..42f0062148 100644 --- a/src/declarative/particles/qsgitemparticle.cpp +++ b/src/declarative/particles/qsgitemparticle.cpp @@ -102,8 +102,8 @@ void QSGItemParticle::tick() mpa->detach();//reparent as well? //TODO: Delete iff we created it m_activeCount--; - m_deletables.removeAll(item); } + m_deletables.clear(); foreach(int pos, m_loadables){ if(m_stasis.contains(m_items[pos])) @@ -133,8 +133,8 @@ void QSGItemParticle::tick() m_items[pos]->setOpacity(0.); m_activeCount++; } - m_loadables.removeAll(pos); } + m_loadables.clear(); } void QSGItemParticle::reload(QSGParticleData* d) diff --git a/src/declarative/particles/qsgmodelparticle.cpp b/src/declarative/particles/qsgmodelparticle.cpp index b0b4fa4ad2..f87c0d31b9 100644 --- a/src/declarative/particles/qsgmodelparticle.cpp +++ b/src/declarative/particles/qsgmodelparticle.cpp @@ -177,21 +177,23 @@ void QSGModelParticle::processPending() foreach(QSGItem* item, m_deletables){ item->setOpacity(0.); m_model->release(item); - m_deletables.removeAll(item); } + m_deletables.clear(); foreach(int pos, m_requests){ - m_items[pos] = m_model->item(m_available.first()); - m_idx[pos] = m_available.first(); - m_available.pop_front(); - QSGModelParticleAttached* mpa = qobject_cast<QSGModelParticleAttached*>(qmlAttachedPropertiesObject<QSGModelParticle>(m_items[pos])); - if(mpa){ - mpa->m_mp = this; - mpa->attach(); + if(!m_available.isEmpty()){ + m_items[pos] = m_model->item(m_available.first()); + m_idx[pos] = m_available.first(); + m_available.pop_front(); + QSGModelParticleAttached* mpa = qobject_cast<QSGModelParticleAttached*>(qmlAttachedPropertiesObject<QSGModelParticle>(m_items[pos])); + if(mpa){ + mpa->m_mp = this; + mpa->attach(); + } + m_items[pos]->setParentItem(this); } - m_items[pos]->setParentItem(this); - m_requests.removeAll(pos); } + m_requests.clear(); } void QSGModelParticle::reload(QSGParticleData* d) |