diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp index 343cac5d5ce4d2a63c71ecd757895956fee9fc17..f09e9bb90e931d345d4def231fd313a351ea6376 100644 --- a/src/quick/items/qquickanimatedsprite.cpp +++ b/src/quick/items/qquickanimatedsprite.cpp @@ -365,7 +365,7 @@ QQuickAnimatedSprite::QQuickAnimatedSprite(QQuickItem *parent) : QQuickItem(parent) , m_node(0) , m_material(0) - , m_sprite(new QQuickSprite) + , m_sprite(new QQuickSprite(this)) , m_spriteEngine(0) , m_curFrame(0) , m_pleaseReset(false) @@ -540,7 +540,7 @@ QSGGeometryNode* QQuickAnimatedSprite::buildNode() m_material = new QQuickAnimatedSpriteMaterial(); - QImage image = m_spriteEngine->assembledImage(); + QImage image = m_spriteEngine->assembledImage(); //Engine prints errors if there are any if (image.isNull()) return 0; m_sheetSize = QSizeF(image.size()); diff --git a/src/quick/items/qquicksprite.cpp b/src/quick/items/qquicksprite.cpp index 13593384d87a0110a57a4407632c46bc2cc8faab..b4138308f685305d689912592b75813b25284f68 100644 --- a/src/quick/items/qquicksprite.cpp +++ b/src/quick/items/qquicksprite.cpp @@ -254,8 +254,15 @@ int QQuickSprite::variedDuration() const //Deals with precedence when multiple d void QQuickSprite::startImageLoading() { m_pix.clear(this); - if (!m_source.isEmpty()) - m_pix.load(qmlEngine(this), m_source); + if (!m_source.isEmpty()) { + QQmlEngine *e = qmlEngine(this); + if (!e) { //If not created in QML, you must set the QObject parent to the QML element so this can work + e = qmlEngine(parent()); + if (!e) + qWarning() << "QQuickSprite: Cannot find QQmlEngine - this class is only for use in QML and may not work"; + } + m_pix.load(e, m_source); + } } QT_END_NAMESPACE diff --git a/src/quick/items/qquickspriteengine.cpp b/src/quick/items/qquickspriteengine.cpp index 4c7be3bce9d8a7bb7af5ab56a3d01ca9285c2fbe..aa93d31cf73b3d6f81293c7a97d6aef3fa0330a2 100644 --- a/src/quick/items/qquickspriteengine.cpp +++ b/src/quick/items/qquickspriteengine.cpp @@ -328,6 +328,7 @@ QQuickPixmap::Status QQuickSpriteEngine::status()//Composed status of all Sprite null = loading = ready = 0; foreach (QQuickSprite* s, m_sprites) { switch (s->m_pix.status()) { + // ### Maybe add an error message here, because this null shouldn't be reached but when it does, the image fails without an error message. case QQuickPixmap::Null : null++; break; case QQuickPixmap::Loading : loading++; break; case QQuickPixmap::Error : return QQuickPixmap::Error;