diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-09-14 15:07:51 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-09-20 13:39:04 +0000 |
commit | a409d9c7a5673c4696968df86bbd694517616e09 (patch) | |
tree | 3548db197af0a6eeba47da468407fb0a8a3926e9 /tests | |
parent | c994fceb9b8372697796dd4fbf3f820c94f69bf8 (diff) |
Fix position property of QMediaPlayer on macOS/iOS
Seeking to a new position is asynchronous on macOS/iOS, so querying the
position after setting it would return a wrong value.
Fix this by remembering the requested position until the seek is
finished.
Fixes: QTBUG-96402
Change-Id: Ib03209fce422273a8274107f3b4d4fa1a06a8ed1
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit dbae07b55819192aa334ccc160b05519795d798f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp index 2f87f257e..ae371b026 100644 --- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp +++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp @@ -81,6 +81,7 @@ private slots: void isSeekable(); void positionAfterSeek(); void videoDimensions(); + void position(); private: QUrl selectVideoFile(const QStringList& mediaCandidates); @@ -1163,6 +1164,30 @@ void tst_QMediaPlayerBackend::videoDimensions() QCOMPARE(surface.videoSize().height(), 120); } +void tst_QMediaPlayerBackend::position() +{ + TestVideoSink surface(true); + QMediaPlayer player; + player.setVideoOutput(&surface); + QVERIFY(!player.isSeekable()); + player.setSource(localVideoFile); + QTRY_VERIFY(player.isSeekable()); + + player.play(); + player.setPosition(1000); + QVERIFY(player.position() > 950); + QVERIFY(player.position() < 1050); + QTRY_VERIFY(player.position() > 1050); + + player.pause(); + player.setPosition(500); + QVERIFY(player.position() > 450); + QVERIFY(player.position() < 550); + QTest::qWait(200); + QVERIFY(player.position() > 450); + QVERIFY(player.position() < 550); +} + QTEST_MAIN(tst_QMediaPlayerBackend) #include "tst_qmediaplayerbackend.moc" |