mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
* #6852: Preferences now solely responsible for audiolayer creation.
This commit is contained in:
@ -1993,8 +1993,7 @@ void ManagerImpl::setAudioPlugin (const std::string& audioPlugin)
|
||||
|
||||
// Recreate audio driver with new settings
|
||||
delete _audiodriver;
|
||||
_audiodriver = new AlsaLayer;
|
||||
assert(preferences.getAudioApi() == ALSA_API_STR);
|
||||
_audiodriver = preferences.createAudioLayer();
|
||||
if (wasStarted)
|
||||
_audiodriver->startStream();
|
||||
|
||||
@ -2033,8 +2032,7 @@ void ManagerImpl::setAudioDevice (const int index, int streamType)
|
||||
|
||||
// Recreate audio driver with new settings
|
||||
delete _audiodriver;
|
||||
_audiodriver = new AlsaLayer;
|
||||
assert(preferences.getAudioApi() == ALSA_API_STR);
|
||||
_audiodriver = preferences.createAudioLayer();
|
||||
|
||||
if (wasStarted)
|
||||
_audiodriver->startStream();
|
||||
@ -2390,12 +2388,7 @@ void ManagerImpl::initAudioDriver (void)
|
||||
audioPreference.setCardring (ALSA_DFT_CARD_ID);
|
||||
}
|
||||
|
||||
if (preferences.getAudioApi() == PULSEAUDIO_API_STR and system("ps -C pulseaudio") == 0)
|
||||
_audiodriver = new PulseLayer;
|
||||
else {
|
||||
preferences.setAudioApi(ALSA_API_STR);
|
||||
_audiodriver = new AlsaLayer;
|
||||
}
|
||||
_audiodriver = preferences.createAudioLayer();
|
||||
|
||||
audioLayerMutexUnlock();
|
||||
}
|
||||
@ -2407,14 +2400,7 @@ void ManagerImpl::switchAudioManager (void)
|
||||
bool wasStarted = _audiodriver->isStarted();
|
||||
delete _audiodriver;
|
||||
|
||||
if (preferences.getAudioApi() == PULSEAUDIO_API_STR) {
|
||||
_audiodriver = new AlsaLayer;
|
||||
preferences.setAudioApi(ALSA_API_STR);
|
||||
}
|
||||
else {
|
||||
_audiodriver = new PulseLayer;
|
||||
preferences.setAudioApi(PULSEAUDIO_API_STR);
|
||||
}
|
||||
_audiodriver = preferences.switchAndCreateAudioLayer();
|
||||
|
||||
if (wasStarted)
|
||||
_audiodriver->startStream();
|
||||
@ -2447,10 +2433,7 @@ void ManagerImpl::audioSamplingRateChanged (int samplerate)
|
||||
_mainBuffer.setInternalSamplingRate(samplerate);
|
||||
|
||||
delete _audiodriver;
|
||||
if (preferences.getAudioApi() == PULSEAUDIO_API_STR)
|
||||
_audiodriver = new PulseLayer;
|
||||
else
|
||||
_audiodriver = new AlsaLayer;
|
||||
_audiodriver = preferences.createAudioLayer();
|
||||
|
||||
unsigned int sampleRate = _audiodriver->getSampleRate();
|
||||
|
||||
|
@ -29,6 +29,8 @@
|
||||
*/
|
||||
|
||||
#include "preferences.h"
|
||||
#include "audio/alsa/alsalayer.h"
|
||||
#include "audio/pulseaudio/pulselayer.h"
|
||||
#include <sstream>
|
||||
#include "global.h"
|
||||
#include <cassert>
|
||||
@ -58,8 +60,24 @@ Preferences::Preferences() : _accountOrder ("")
|
||||
|
||||
}
|
||||
|
||||
Preferences::~Preferences() {}
|
||||
AudioLayer* Preferences::createAudioLayer()
|
||||
{
|
||||
if (_audioApi == PULSEAUDIO_API_STR and system("ps -C pulseaudio") == 0)
|
||||
return new PulseLayer;
|
||||
else {
|
||||
_audioApi = ALSA_API_STR;
|
||||
return new AlsaLayer;
|
||||
}
|
||||
}
|
||||
|
||||
AudioLayer* Preferences::switchAndCreateAudioLayer()
|
||||
{
|
||||
if (_audioApi == PULSEAUDIO_API_STR)
|
||||
_audioApi = ALSA_API_STR;
|
||||
else
|
||||
_audioApi = PULSEAUDIO_API_STR;
|
||||
return createAudioLayer();
|
||||
}
|
||||
|
||||
void Preferences::serialize (Conf::YamlEmitter *emiter)
|
||||
{
|
||||
|
@ -97,6 +97,7 @@ const std::string popupShortKey ("popupWindow");
|
||||
const std::string toggleHoldShortKey ("toggleHold");
|
||||
const std::string togglePickupHangupShortKey ("togglePickupHangup");
|
||||
|
||||
class AudioLayer;
|
||||
|
||||
class Preferences : public Serializable
|
||||
{
|
||||
@ -107,7 +108,8 @@ class Preferences : public Serializable
|
||||
|
||||
Preferences();
|
||||
|
||||
~Preferences();
|
||||
AudioLayer *createAudioLayer();
|
||||
AudioLayer *switchAndCreateAudioLayer();
|
||||
|
||||
virtual void serialize (Conf::YamlEmitter *emitter);
|
||||
|
||||
|
Reference in New Issue
Block a user