aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickanimatedsprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickanimatedsprite.cpp')
-rw-r--r--src/quick/items/qquickanimatedsprite.cpp9
1 files changed, 9 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();