diff options
author | Val Doroshchuk <valentyn.doroshchuk@qt.io> | 2017-11-02 09:08:37 +0100 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2017-12-20 12:03:48 +0000 |
commit | bfebd23f150fa660177fff6aa372ae46e42038c3 (patch) | |
tree | 7a1a681af725d0d9a30febeb3b88d723f6ba66d0 /tests | |
parent | 13363975133c2a213daf4b05989cdc24a74d6c15 (diff) | |
download | qtmultimedia-bfebd23f150fa660177fff6aa372ae46e42038c3.tar.gz |
Update player state after QMediaPlayer::EndOfMedia
Return up-to-date player state if mediaStatusChanged()
with QMediaPlayer::EndOfMedia is already received
but stateChanged() is not.
mediaStatusChanged() is always emitted first
which could cause the player to keep outdated state
before stateChanged() is received.
Task-number: QTBUG-57197
Change-Id: I0706069d2f4875076442fdf8ac7e938272ab843c
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp index 082e81b34..3deb534eb 100644 --- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp +++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp @@ -77,6 +77,7 @@ private slots: void surfaceTest_data(); void surfaceTest(); void metadata(); + void playerStateAtEOS(); private: QMediaContent selectVideoFile(const QStringList& mediaCandidates); @@ -1412,6 +1413,28 @@ void tst_QMediaPlayerBackend::metadata() QVERIFY(player.availableMetaData().isEmpty()); } +void tst_QMediaPlayerBackend::playerStateAtEOS() +{ + if (!isWavSupported()) + QSKIP("Sound format is not supported"); + + QMediaPlayer player; + + bool endOfMediaReceived = false; + connect(&player, &QMediaPlayer::mediaStatusChanged, [&](QMediaPlayer::MediaStatus status) { + if (status == QMediaPlayer::EndOfMedia) { + QCOMPARE(player.state(), QMediaPlayer::StoppedState); + endOfMediaReceived = true; + } + }); + + player.setMedia(localWavFile); + player.play(); + + QTRY_COMPARE(player.mediaStatus(), QMediaPlayer::EndOfMedia); + QVERIFY(endOfMediaReceived); +} + TestVideoSurface::TestVideoSurface(bool storeFrames): m_totalFrames(0), m_storeFrames(storeFrames) |