summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-09-14 15:07:51 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-09-20 13:39:04 +0000
commita409d9c7a5673c4696968df86bbd694517616e09 (patch)
tree3548db197af0a6eeba47da468407fb0a8a3926e9 /tests
parentc994fceb9b8372697796dd4fbf3f820c94f69bf8 (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.cpp25
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"