diff options
-rw-r--r-- | src/quick/util/qquickanimatorjob.cpp | 9 | ||||
-rw-r--r-- | tests/auto/qmltest-blacklist/animators/tst_stopped.qml | 86 |
2 files changed, 93 insertions, 2 deletions
diff --git a/src/quick/util/qquickanimatorjob.cpp b/src/quick/util/qquickanimatorjob.cpp index 62989b076b..fa13e8519e 100644 --- a/src/quick/util/qquickanimatorjob.cpp +++ b/src/quick/util/qquickanimatorjob.cpp @@ -220,7 +220,6 @@ void QQuickAnimatorProxyJob::readyToAnimate() static void qquick_syncback_helper(QAbstractAnimationJob *job) { if (job->isRenderThreadJob()) { - Q_ASSERT(!job->isRunning()); static_cast<QQuickAnimatorJob *>(job)->writeBack(); } else if (job->isGroup()) { @@ -264,7 +263,13 @@ qreal QQuickAnimatorJob::progress(int time) const qreal QQuickAnimatorJob::value() const { - return m_value; + qreal value = m_to; + if (m_controller) { + m_controller->lock(); + value = m_value; + m_controller->unlock(); + } + return value; } void QQuickAnimatorJob::setTarget(QQuickItem *target) diff --git a/tests/auto/qmltest-blacklist/animators/tst_stopped.qml b/tests/auto/qmltest-blacklist/animators/tst_stopped.qml new file mode 100644 index 0000000000..56bec4e452 --- /dev/null +++ b/tests/auto/qmltest-blacklist/animators/tst_stopped.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtTest 1.1 + +Item { + id: root; + width: 200 + height: 200 + + TestCase { + id: testcase + name: "animators-stopped" + when: root.done + function test_endresult() { + verify(true); + } + } + + ShaderEffect { + id: shaderEffect + property real t; + width: 10 + height: 10 + + fragmentShader: " + highp uniform float t; + void main() { + gl_FragColor = vec4(t, t, t, 1.0); + } + " + UniformAnimator { id: uniformAnimator; target: shaderEffect; uniform: "t"; loops: Animation.Infinite; running: true; } + } + + Box { + id: box + + ScaleAnimator { id: scaleAnimator; target: box; loops: Animation.Infinite; running: true; } + XAnimator { id: xAnimator; target: box; loops: Animation.Infinite; running: true; } + YAnimator { id: yAnimator; target: box; loops: Animation.Infinite; running: true; } + RotationAnimator { id: rotationAnimator; target: box; loops: Animation.Infinite; running: true; } + OpacityAnimator { id: opacityAnimator; target: box; loops: Animation.Infinite; running: true; } + + Timer { + id: timer; + interval: 500 + running: true + repeat: false + onTriggered: { + xAnimator.stop(); + yAnimator.stop(); + scaleAnimator.stop() + rotationAnimator.stop(); + rotationAnimator.stop(); + uniformAnimator.stop(); + testcase.when = true; + } + } + } +} |