diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2012-05-10 20:26:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-12 05:25:30 +0200 |
commit | 754905afb1d16f9cec274b3ce3ff2b937bc13e84 (patch) | |
tree | 2d0a92c8ecb919023ec0fff206d8c8f9e918b7a0 /src | |
parent | e8206bf6ab6ef62b5dd24bf002aa56edecbcec97 (diff) |
Emit currentFrameChanged signal when needed
Task-number: QTBUG-25039
Change-Id: I8bd5fd40a5fee1314f0401ed4708d73ed1cfad94
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickanimatedsprite.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickanimatedsprite_p.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp index 24f3de2491..acb38863be 100644 --- a/src/quick/items/qquickanimatedsprite.cpp +++ b/src/quick/items/qquickanimatedsprite.cpp @@ -44,6 +44,7 @@ #include "qquickspriteengine_p.h" #include <QtQuick/private/qsgcontext_p.h> #include <private/qsgadaptationlayer_p.h> +#include <private/qqmlglobal_p.h> #include <QtQuick/qsgnode.h> #include <QtQuick/qsgtexturematerial.h> #include <QtQuick/qsgtexture.h> @@ -377,6 +378,11 @@ QQuickAnimatedSprite::QQuickAnimatedSprite(QQuickItem *parent) : this, SLOT(sizeVertices())); } +bool QQuickAnimatedSprite::isCurrentFrameChangedConnected() +{ + IS_SIGNAL_CONNECTED(this, QQuickAnimatedSprite, currentFrameChanged, (int)); +} + void QQuickAnimatedSprite::reloadImage() { if (!isComponentComplete()) @@ -597,6 +603,7 @@ void QQuickAnimatedSprite::prepareNextFrame() double frameAt; //double just for modf qreal progress = 0.0; + int lastFrame = m_curFrame; if (!m_paused) { //Advance State (keeps time for psuedostates) m_spriteEngine->updateSprites(timeInt); @@ -629,6 +636,8 @@ void QQuickAnimatedSprite::prepareNextFrame() } else { frameAt = m_curFrame; } + if (m_curFrame != lastFrame && isCurrentFrameChangedConnected()) + emit currentFrameChanged(m_curFrame); if (m_spriteEngine->sprite()->reverse()) frameAt = (m_spriteEngine->spriteFrames() - 1) - frameAt; qreal y = m_spriteEngine->spriteY() / m_sheetSize.height(); diff --git a/src/quick/items/qquickanimatedsprite_p.h b/src/quick/items/qquickanimatedsprite_p.h index c9a74b2231..4d9c008c36 100644 --- a/src/quick/items/qquickanimatedsprite_p.h +++ b/src/quick/items/qquickanimatedsprite_p.h @@ -353,6 +353,7 @@ protected: void componentComplete(); QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *); private: + bool isCurrentFrameChangedConnected(); void prepareNextFrame(); void reloadImage(); QSGGeometryNode* buildNode(); |