diff options
author | Jan Arve Saether <jan-arve.saether@qt.io> | 2020-03-25 16:53:18 +0100 |
---|---|---|
committer | Jan Arve Saether <jan-arve.saether@qt.io> | 2020-03-31 11:36:46 +0100 |
commit | 8e0711cafd7e78c6e5d77fdda6be91135a355cd1 (patch) | |
tree | 0d9747e117c60be6ef6b4d50215d3de8b00c5267 /tests/auto/quick/qquickdynamicpropertyanimation | |
parent | 2a514e4eb84fcf618d7c6baadbc7219cdd946fe2 (diff) |
Fix signal emission order for zero-duration animations
The order for non-zero-duration animations are:
* started()
* runningChanged(true)
* stopped()
* runningChanged(false)
* finished()
This patch tries to ensure that zero-duration animations have the same signal
emission order.
The problem was that when setRunning(true) was called on zero-duration
animation, it would call itself (setRunning(false)) lower in the call stack in
order to immediately stop again. This had the implication that we could emit
stopped() even before started() was emitted (since the recursive call to
setRunning(false) would actually complete before the ancestor stack frame
setRunning(true) was completed)
To fix this we emit started() *before* we call start() on the animationInstance.
There is still a bug in that runningChanged(true) is still not emitted for a
zero-duration animation, but this patch should improve the current behavior in
the sense that stopped() is not emitted _before_ started().
Task-number: QTBUG-48193
Change-Id: Ic2bc85e648e6746f6a058e2e9136515e7fdb6192
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickdynamicpropertyanimation')
0 files changed, 0 insertions, 0 deletions