aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2012-05-10 20:26:13 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-12 05:25:30 +0200
commit754905afb1d16f9cec274b3ce3ff2b937bc13e84 (patch)
tree2d0a92c8ecb919023ec0fff206d8c8f9e918b7a0 /src
parente8206bf6ab6ef62b5dd24bf002aa56edecbcec97 (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.cpp9
-rw-r--r--src/quick/items/qquickanimatedsprite_p.h1
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();