diff options
Diffstat (limited to 'src/quick/particles/qquickparticlepainter.cpp')
-rw-r--r-- | src/quick/particles/qquickparticlepainter.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/quick/particles/qquickparticlepainter.cpp b/src/quick/particles/qquickparticlepainter.cpp index f46f2f2235..e490b70240 100644 --- a/src/quick/particles/qquickparticlepainter.cpp +++ b/src/quick/particles/qquickparticlepainter.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qquickparticlepainter_p.h" +#include <QQuickCanvas> #include <QDebug> QT_BEGIN_NAMESPACE /*! @@ -65,10 +66,22 @@ QT_BEGIN_NAMESPACE */ QQuickParticlePainter::QQuickParticlePainter(QQuickItem *parent) : QQuickItem(parent), - m_system(0), m_count(0), m_pleaseReset(true) + m_system(0), m_count(0), m_pleaseReset(true), m_canvas(0) { } +void QQuickParticlePainter::itemChange(ItemChange change, const ItemChangeData &data) +{ + if (change == QQuickItem::ItemSceneChange) { + if (m_canvas) + disconnect(m_canvas, SIGNAL(sceneGraphInvalidated()), this, SLOT(sceneGraphInvalidated())); + m_canvas = data.canvas; + if (m_canvas) + connect(m_canvas, SIGNAL(sceneGraphInvalidated()), this, SLOT(sceneGraphInvalidated()), Qt::DirectConnection); + + } +} + void QQuickParticlePainter::componentComplete() { if (!m_system && qobject_cast<QQuickParticleSystem*>(parentItem())) |