From 00c0f8be1d7747a9167c5e1970ca4b23327e4870 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 2 Sep 2021 15:58:55 +0200 Subject: Avoid emitting activeTracksChanged() if the active track doesn't change Capture those early, by checking against the currently active track in qmediaplayer. Pick-to: 6.2 Change-Id: I964deb994bd1490551191f6ed865e4f221dece0c Reviewed-by: Assam Boudjelthia --- src/multimedia/playback/qmediaplayer.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 3f5ef7b3a..ac44433be 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -587,7 +587,7 @@ int QMediaPlayer::activeVideoTrack() const Q_D(const QMediaPlayer); if (d->control) return d->control->activeTrack(QPlatformMediaPlayer::VideoStream); - return 0; + return -1; } /*! @@ -598,7 +598,7 @@ int QMediaPlayer::activeSubtitleTrack() const Q_D(const QMediaPlayer); if (d->control) return d->control->activeTrack(QPlatformMediaPlayer::SubtitleStream); - return 0; + return -1; } /*! @@ -611,8 +611,12 @@ int QMediaPlayer::activeSubtitleTrack() const void QMediaPlayer::setActiveAudioTrack(int index) { Q_D(QMediaPlayer); - if (d->control) - d->control->setActiveTrack(QPlatformMediaPlayer::AudioStream, index); + if (!d->control) + return; + + if (activeAudioTrack() == index) + return; + d->control->setActiveTrack(QPlatformMediaPlayer::AudioStream, index); } /*! @@ -623,8 +627,12 @@ void QMediaPlayer::setActiveAudioTrack(int index) void QMediaPlayer::setActiveVideoTrack(int index) { Q_D(QMediaPlayer); - if (d->control) - d->control->setActiveTrack(QPlatformMediaPlayer::VideoStream, index); + if (!d->control) + return; + + if (activeVideoTrack() == index) + return; + d->control->setActiveTrack(QPlatformMediaPlayer::VideoStream, index); } /*! @@ -637,8 +645,12 @@ void QMediaPlayer::setActiveVideoTrack(int index) void QMediaPlayer::setActiveSubtitleTrack(int index) { Q_D(QMediaPlayer); - if (d->control) - d->control->setActiveTrack(QPlatformMediaPlayer::SubtitleStream, index); + if (!d->control) + return; + + if (activeSubtitleTrack() == index) + return; + d->control->setActiveTrack(QPlatformMediaPlayer::SubtitleStream, index); } QObject *QMediaPlayer::videoOutput() const -- cgit v1.2.3