aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/particles/qquickparticlepainter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/particles/qquickparticlepainter.cpp')
-rw-r--r--src/quick/particles/qquickparticlepainter.cpp15
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()))