aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/particles/qsgmodelparticle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/particles/qsgmodelparticle.cpp')
-rw-r--r--src/declarative/particles/qsgmodelparticle.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/declarative/particles/qsgmodelparticle.cpp b/src/declarative/particles/qsgmodelparticle.cpp
index 704b9a298c..f87c0d31b9 100644
--- a/src/declarative/particles/qsgmodelparticle.cpp
+++ b/src/declarative/particles/qsgmodelparticle.cpp
@@ -178,18 +178,22 @@ void QSGModelParticle::processPending()
item->setOpacity(0.);
m_model->release(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.clear();
}
void QSGModelParticle::reload(QSGParticleData* d)