diff --git a/linphone-desktop/src/components/sound-player/SoundPlayer.cpp b/linphone-desktop/src/components/sound-player/SoundPlayer.cpp index 06f683bcc..26cf1b8e9 100644 --- a/linphone-desktop/src/components/sound-player/SoundPlayer.cpp +++ b/linphone-desktop/src/components/sound-player/SoundPlayer.cpp @@ -68,6 +68,11 @@ SoundPlayer::SoundPlayer (QObject *parent) : QObject(parent) { mInternalPlayer->setListener(mHandlers); } +SoundPlayer::~SoundPlayer () { + mForceCloseTimer->stop(); + mInternalPlayer->close(); +} + // ----------------------------------------------------------------------------- void SoundPlayer::pause () { diff --git a/linphone-desktop/src/components/sound-player/SoundPlayer.hpp b/linphone-desktop/src/components/sound-player/SoundPlayer.hpp index afc9b24bf..18b7f15c3 100644 --- a/linphone-desktop/src/components/sound-player/SoundPlayer.hpp +++ b/linphone-desktop/src/components/sound-player/SoundPlayer.hpp @@ -56,7 +56,7 @@ public: Q_ENUM(PlaybackState); SoundPlayer (QObject *parent = Q_NULLPTR); - ~SoundPlayer () = default; + ~SoundPlayer (); Q_INVOKABLE void pause (); Q_INVOKABLE void play (); diff --git a/linphone-desktop/ui/views/App/Settings/SettingsAudio.qml b/linphone-desktop/ui/views/App/Settings/SettingsAudio.qml index c8c7caa17..2345e1b3c 100644 --- a/linphone-desktop/ui/views/App/Settings/SettingsAudio.qml +++ b/linphone-desktop/ui/views/App/Settings/SettingsAudio.qml @@ -74,7 +74,11 @@ TabContainer { selectedFile: SettingsModel.ringPath onAccepted: { - ringPlayer.stop() + var item = ringPlayer.item + if (item) { + item.stop() + } + SettingsModel.ringPath = selectedFile } @@ -84,27 +88,33 @@ TabContainer { leftMargin: SettingsAudioStyle.ringPlayer.leftMargin } - enabled: ringPlayer.playbackState === SoundPlayer.PlayingState + enabled: { + var item = ringPlayer.item + return item && item.playbackState === SoundPlayer.PlayingState + } + icon: 'pause' onClicked: { + var item = ringPlayer.item + if (!item) { + return + } + if (enabled) { - ringPlayer.stop() + item.stop() } else { - ringPlayer.play() + item.play() } } - SoundPlayer { + Loader { id: ringPlayer - source: SettingsModel.ringPath - } - - Connections { - target: window - - onClosing: ringPlayer.stop() + active: window.visible + sourceComponent: SoundPlayer { + source: SettingsModel.ringPath + } } } }