From 02ca3cb191b8c19a1cb71bc5397f0f6e9f3dab47 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 3 May 2017 10:05:48 +0200 Subject: [PATCH] feat(ui/views/App/Settings/SettingsAudio): unload ring player when window is not visible --- .../components/sound-player/SoundPlayer.cpp | 5 +++ .../components/sound-player/SoundPlayer.hpp | 2 +- .../ui/views/App/Settings/SettingsAudio.qml | 34 ++++++++++++------- 3 files changed, 28 insertions(+), 13 deletions(-) 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 + } } } }