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) {
mHandlers = make_shared<SoundPlayer::Handlers>(this);
mInternalPlayer = CoreManager::getInstance()->getCore()->createLocalPlayer("", "", nullptr);
mInternalPlayer->setListener(mHandlers);
buildInternalPlayer();
}
SoundPlayer::~SoundPlayer () {
......@@ -117,16 +116,7 @@ void SoundPlayer::play () {
}
void SoundPlayer::stop () {
if (mPlaybackState == SoundPlayer::StoppedState)
return;
mForceCloseTimer->stop();
mPlaybackState = SoundPlayer::StoppedState;
mInternalPlayer->close();
emit stopped();
emit playbackStateChanged(mPlaybackState);
stop(false);
}
// -----------------------------------------------------------------------------
......@@ -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 () {
mForceCloseMutex.lock();
......
......@@ -76,6 +76,11 @@ signals:
void playbackStateChanged (PlaybackState playbackState);
private:
void buildInternalPlayer ();
void rebuildInternalPlayer ();
void stop (bool force);
void handleEof ();
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