Commit ab4efe77 authored by Wescoeur's avatar Wescoeur

fix(SoundPlayer): handle ringer device change

parent d4e1adca
...@@ -64,8 +64,7 @@ SoundPlayer::SoundPlayer (QObject *parent) : QObject(parent) { ...@@ -64,8 +64,7 @@ SoundPlayer::SoundPlayer (QObject *parent) : QObject(parent) {
mHandlers = make_shared<SoundPlayer::Handlers>(this); mHandlers = make_shared<SoundPlayer::Handlers>(this);
mInternalPlayer = CoreManager::getInstance()->getCore()->createLocalPlayer("", "", nullptr); buildInternalPlayer();
mInternalPlayer->setListener(mHandlers);
} }
SoundPlayer::~SoundPlayer () { SoundPlayer::~SoundPlayer () {
...@@ -117,16 +116,7 @@ void SoundPlayer::play () { ...@@ -117,16 +116,7 @@ void SoundPlayer::play () {
} }
void SoundPlayer::stop () { void SoundPlayer::stop () {
if (mPlaybackState == SoundPlayer::StoppedState) stop(false);
return;
mForceCloseTimer->stop();
mPlaybackState = SoundPlayer::StoppedState;
mInternalPlayer->close();
emit stopped();
emit playbackStateChanged(mPlaybackState);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -143,6 +133,40 @@ int SoundPlayer::getPosition () const { ...@@ -143,6 +133,40 @@ int SoundPlayer::getPosition () const {
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SoundPlayer::buildInternalPlayer () {
CoreManager *coreManager = CoreManager::getInstance();
SettingsModel *settingsModel = coreManager->getSettingsModel();
mInternalPlayer = coreManager->getCore()->createLocalPlayer(
::Utils::appStringToCoreString(settingsModel->getRingerDevice()), "", nullptr
);
mInternalPlayer->setListener(mHandlers);
QObject::connect(settingsModel, &SettingsModel::ringerDeviceChanged, this, [this] {
rebuildInternalPlayer();
});
}
void SoundPlayer::rebuildInternalPlayer () {
stop(true);
buildInternalPlayer();
}
void SoundPlayer::stop (bool force) {
if (mPlaybackState == SoundPlayer::StoppedState && !force)
return;
mForceCloseTimer->stop();
mPlaybackState = SoundPlayer::StoppedState;
mInternalPlayer->close();
emit stopped();
emit playbackStateChanged(mPlaybackState);
}
// -----------------------------------------------------------------------------
void SoundPlayer::handleEof () { void SoundPlayer::handleEof () {
mForceCloseMutex.lock(); mForceCloseMutex.lock();
......
...@@ -76,6 +76,11 @@ signals: ...@@ -76,6 +76,11 @@ signals:
void playbackStateChanged (PlaybackState playbackState); void playbackStateChanged (PlaybackState playbackState);
private: private:
void buildInternalPlayer ();
void rebuildInternalPlayer ();
void stop (bool force);
void handleEof (); void handleEof ();
void setError (const QString &message); void setError (const QString &message);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment