diff --git a/picard/ui/playertoolbar.py b/picard/ui/playertoolbar.py index 6c0cc87d5..1b1eb5344 100644 --- a/picard/ui/playertoolbar.py +++ b/picard/ui/playertoolbar.py @@ -233,6 +233,18 @@ class PlayerToolbar(QtWidgets.QToolBar): label = _('%1.1f ×') % playback_rate self.player._player.setPlaybackRate(playback_rate) self.playback_speed_action.setText(label) + # Playback rate changes do not affect the current media playback. + # Force playback restart to have the rate change applied immediately. + player = self.player._player + player_state = player.state() + if player_state != QtMultimedia.QMediaPlayer.StoppedState: + position = player.position() + player.stop() + player.setPosition(position) + if player_state == QtMultimedia.QMediaPlayer.PlayingState: + player.play() + elif player_state == QtMultimedia.QMediaPlayer.PausedState: + player.pause() def on_duration_changed(self, duration): self.progress_slider.setMaximum(duration)