diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickanimatedsprite.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickanimatedsprite_p.h | 9 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp index acb38863be..79a8d007c7 100644 --- a/src/quick/items/qquickanimatedsprite.cpp +++ b/src/quick/items/qquickanimatedsprite.cpp @@ -400,7 +400,8 @@ void QQuickAnimatedSprite::componentComplete() void QQuickAnimatedSprite::start() { - if (m_running) + m_running = true; + if (!isComponentComplete()) return; m_curLoop = 0; m_timestamp.start(); @@ -409,16 +410,16 @@ void QQuickAnimatedSprite::start() m_spriteEngine->updateSprites(0); m_spriteEngine->start(0); } - m_running = true; + emit currentFrameChanged(0); emit runningChanged(true); update(); } void QQuickAnimatedSprite::stop() { - if (!m_running) - return; m_running = false; + if (!isComponentComplete()) + return; m_pauseOffset = 0; emit runningChanged(false); } diff --git a/src/quick/items/qquickanimatedsprite_p.h b/src/quick/items/qquickanimatedsprite_p.h index 4d9c008c36..0e5ccc2244 100644 --- a/src/quick/items/qquickanimatedsprite_p.h +++ b/src/quick/items/qquickanimatedsprite_p.h @@ -250,7 +250,8 @@ public slots: if (m_sprite->m_frameSync != arg) { m_sprite->setFrameSync(arg); emit frameSyncChanged(arg); - restart(); + if (m_running) + restart(); } } @@ -304,7 +305,8 @@ public slots: if (m_sprite->m_frameRate != arg) { m_sprite->setFrameRate(arg); emit frameRateChanged(arg); - restart(); + if (m_running) + restart(); } } @@ -313,7 +315,8 @@ public slots: if (m_sprite->m_frameDuration != arg) { m_sprite->setFrameDuration(arg); emit frameDurationChanged(arg); - restart(); + if (m_running) + restart(); } } |