mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-20 04:58:09 +00:00
- Reorder destroy objects
- Fix signal attach to avoid cyclic connections - Add destructor on Settings Model - Add Presence Fix
This commit is contained in:
parent
971997e162
commit
65906d785c
6 changed files with 31 additions and 19 deletions
|
|
@ -33,7 +33,6 @@ using namespace std;
|
|||
|
||||
ContactsListModel::ContactsListModel (QObject *parent) : QAbstractListModel(parent) {
|
||||
mLinphoneFriends = CoreManager::getInstance()->getCore()->getFriendsLists().front();
|
||||
|
||||
// Clean friends.
|
||||
{
|
||||
list<shared_ptr<linphone::Friend>> toRemove;
|
||||
|
|
|
|||
|
|
@ -282,6 +282,8 @@ void CoreManager::createLinphoneCore (const QString &configPath) {
|
|||
|
||||
setDatabasesPaths();
|
||||
setOtherPaths();
|
||||
|
||||
mCore->enableFriendListSubscription(true);
|
||||
}
|
||||
|
||||
void CoreManager::migrate () {
|
||||
|
|
|
|||
|
|
@ -51,11 +51,17 @@ SettingsModel::SettingsModel (QObject *parent) : QObject(parent) {
|
|||
this, &SettingsModel::handleCallStateChanged);
|
||||
configureRlsUri();
|
||||
}
|
||||
|
||||
SettingsModel::~SettingsModel()
|
||||
{
|
||||
if(mSimpleCaptureGraph )
|
||||
{
|
||||
delete mSimpleCaptureGraph;
|
||||
mSimpleCaptureGraph = nullptr;
|
||||
}
|
||||
}
|
||||
void SettingsModel::settingsWindowClosing(void) {
|
||||
onSettingsTabChanged(-1);
|
||||
}
|
||||
|
||||
//Provides tabbar per-tab setup/teardown mecanism for specific settings views
|
||||
void SettingsModel::onSettingsTabChanged(int idx) {
|
||||
int prevIdx = mCurrentSettingsTab;
|
||||
|
|
@ -160,15 +166,14 @@ void SettingsModel::createCaptureGraph() {
|
|||
}
|
||||
if (!mSimpleCaptureGraph) {
|
||||
mSimpleCaptureGraph =
|
||||
new MediastreamerUtils::SimpleCaptureGraph(Utils::appStringToCoreString(getCaptureDevice()),
|
||||
Utils::appStringToCoreString(getPlaybackDevice()));
|
||||
new MediastreamerUtils::SimpleCaptureGraph(getCaptureDevice().toStdString(), getPlaybackDevice().toStdString());
|
||||
}
|
||||
mSimpleCaptureGraph->start();
|
||||
emit captureGraphRunningChanged(getCaptureGraphRunning());
|
||||
}
|
||||
|
||||
//Force a call on the 'detect' method of all audio filters, updating new or removed devices
|
||||
void SettingsModel::accessAudioSettings() {
|
||||
void SettingsModel::accessAudioSettings() {
|
||||
CoreManager::getInstance()->getCore()->reloadSoundDevices();
|
||||
emit captureDevicesChanged(getCaptureDevices());
|
||||
emit playbackDevicesChanged(getPlaybackDevices());
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ public:
|
|||
|
||||
|
||||
SettingsModel (QObject *parent = Q_NULLPTR);
|
||||
virtual ~SettingsModel ();
|
||||
|
||||
// ===========================================================================
|
||||
// METHODS.
|
||||
|
|
|
|||
|
|
@ -58,13 +58,18 @@ private:
|
|||
// -----------------------------------------------------------------------------
|
||||
|
||||
SoundPlayer::SoundPlayer (QObject *parent) : QObject(parent) {
|
||||
CoreManager *coreManager = CoreManager::getInstance();
|
||||
SettingsModel *settingsModel = coreManager->getSettingsModel();
|
||||
mForceCloseTimer = new QTimer(this);
|
||||
mForceCloseTimer->setInterval(ForceCloseTimerInterval);
|
||||
|
||||
QObject::connect(mForceCloseTimer, &QTimer::timeout, this, &SoundPlayer::handleEof);
|
||||
|
||||
mHandlers = make_shared<SoundPlayer::Handlers>(this);
|
||||
mHandlers = make_shared<SoundPlayer::Handlers>(this);
|
||||
|
||||
QObject::connect(settingsModel, &SettingsModel::ringerDeviceChanged, this, [this] {
|
||||
rebuildInternalPlayer();
|
||||
});
|
||||
buildInternalPlayer();
|
||||
}
|
||||
|
||||
|
|
@ -142,10 +147,6 @@ void SoundPlayer::buildInternalPlayer () {
|
|||
Utils::appStringToCoreString(settingsModel->getRingerDevice()), "", nullptr
|
||||
);
|
||||
mInternalPlayer->addListener(mHandlers);
|
||||
|
||||
QObject::connect(settingsModel, &SettingsModel::ringerDeviceChanged, this, [this] {
|
||||
rebuildInternalPlayer();
|
||||
});
|
||||
}
|
||||
|
||||
void SoundPlayer::rebuildInternalPlayer () {
|
||||
|
|
@ -159,9 +160,9 @@ void SoundPlayer::stop (bool force) {
|
|||
|
||||
mForceCloseTimer->stop();
|
||||
mPlaybackState = SoundPlayer::StoppedState;
|
||||
|
||||
mInternalPlayer->close();
|
||||
|
||||
|
||||
emit stopped();
|
||||
emit playbackStateChanged(mPlaybackState);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,11 @@ SimpleCaptureGraph::~SimpleCaptureGraph()
|
|||
}
|
||||
|
||||
void SimpleCaptureGraph::init() {
|
||||
|
||||
if (!audioCapture) {
|
||||
audioCapture = ms_snd_card_create_reader(captureCard);
|
||||
}
|
||||
|
||||
if (!audioSink) {
|
||||
audioSink = ms_snd_card_create_writer(playbackCard);
|
||||
}
|
||||
|
|
@ -67,6 +69,7 @@ void SimpleCaptureGraph::init() {
|
|||
ms_filter_call_method(playbackVolumeFilter, static_cast<unsigned int>(MS_VOLUME_SET_GAIN), &muteGain);
|
||||
|
||||
ticker = ms_ticker_new();
|
||||
|
||||
running = false;
|
||||
}
|
||||
|
||||
|
|
@ -89,14 +92,15 @@ void SimpleCaptureGraph::destroy() {
|
|||
stop();
|
||||
}
|
||||
ms_ticker_destroy(ticker);
|
||||
ms_filter_unlink(audioCapture, 0, captureVolumeFilter, 0);
|
||||
ms_filter_unlink(captureVolumeFilter, 0, playbackVolumeFilter, 0);
|
||||
ms_filter_unlink(playbackVolumeFilter, 0, audioSink, 0);
|
||||
|
||||
ms_free(audioCapture);
|
||||
ms_free(captureVolumeFilter);
|
||||
ms_free(audioSink);
|
||||
ms_free(playbackVolumeFilter);
|
||||
ms_filter_unlink(playbackVolumeFilter, 0, audioSink, 0);
|
||||
ms_filter_unlink(captureVolumeFilter, 0, playbackVolumeFilter, 0);
|
||||
ms_filter_unlink(audioCapture, 0, captureVolumeFilter, 0);
|
||||
|
||||
ms_filter_destroy(playbackVolumeFilter);
|
||||
ms_filter_destroy(captureVolumeFilter);
|
||||
ms_filter_destroy(audioSink);
|
||||
ms_filter_destroy(audioCapture);
|
||||
}
|
||||
|
||||
float SimpleCaptureGraph::getCaptureGain() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue