- Reorder destroy objects

- Fix signal attach to avoid cyclic connections
- Add destructor on Settings Model
- Add Presence Fix
This commit is contained in:
Julien Wadel 2020-03-22 21:57:48 +01:00
parent 971997e162
commit 65906d785c
6 changed files with 31 additions and 19 deletions

View file

@ -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;

View file

@ -282,6 +282,8 @@ void CoreManager::createLinphoneCore (const QString &configPath) {
setDatabasesPaths();
setOtherPaths();
mCore->enableFriendListSubscription(true);
}
void CoreManager::migrate () {

View file

@ -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());

View file

@ -190,6 +190,7 @@ public:
SettingsModel (QObject *parent = Q_NULLPTR);
virtual ~SettingsModel ();
// ===========================================================================
// METHODS.

View file

@ -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);
}

View file

@ -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() {