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 /src | |
parent | 13363975133c2a213daf4b05989cdc24a74d6c15 (diff) |
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 'src')
-rw-r--r-- | src/multimedia/playback/qmediaplayer.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 16fdec8ea..a3484a6ff 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -718,7 +718,17 @@ void QMediaPlayer::setNetworkConfigurations(const QList<QNetworkConfiguration> & QMediaPlayer::State QMediaPlayer::state() const { - return d_func()->state; + Q_D(const QMediaPlayer); + + // In case if EndOfMedia status is already received + // but state is not. + if (d->control != 0 + && d->status == QMediaPlayer::EndOfMedia + && d->state != d->control->state()) { + return d->control->state(); + } + + return d->state; } QMediaPlayer::MediaStatus QMediaPlayer::mediaStatus() const |