diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2012-06-13 18:49:12 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-20 06:04:01 +0200 |
commit | 369423f7410dfa855b96c559603e4c75a3a22256 (patch) | |
tree | 2d927748cab2d62b50c77c017d6816f23b1ce0ae /src | |
parent | cbc6c299d48b05500c8f496abed5ef8b8f735add (diff) |
Don't start running if a frame property is set
This fixes an error where running couldn't be reliably set, if a frame
property was also being set during initialization. With this fixed, the
autotest is no longer unstable.
Also fixed is a related issue where start/stop/restart were active
before componentComplete.
Change-Id: I34c6d872f2f146d38c65167eda8c0a97525d7f4e
Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
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(); } } |