From 559b5b13ea242f5f8eaaf4e382577dde4f52f2db Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 20 Feb 2024 17:08:24 +0100 Subject: [PATCH] Fix capture graph with settings. --- .../src/components/settings/SettingsModel.cpp | 23 +++++++++++++------ .../ui/views/App/Settings/SettingsAudio.qml | 4 ---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/linphone-app/src/components/settings/SettingsModel.cpp b/linphone-app/src/components/settings/SettingsModel.cpp index 01397b450..9608d55da 100644 --- a/linphone-app/src/components/settings/SettingsModel.cpp +++ b/linphone-app/src/components/settings/SettingsModel.cpp @@ -344,15 +344,20 @@ void SettingsModel::createCaptureGraph() { emit captureGraphRunningChanged(getCaptureGraphRunning()); } void SettingsModel::startCaptureGraph() { - if(!getIsInCall()) { - if (!mSimpleCaptureGraph) createCaptureGraph(); + if (!getIsInCall()) { + if (!mSimpleCaptureGraph) { + qDebug() << "Starting capture graph [" << mCaptureGraphListenerCount << "]"; + createCaptureGraph(); + } ++mCaptureGraphListenerCount; } } -void SettingsModel::stopCaptureGraph(){ - if(mCaptureGraphListenerCount > 0 ){ - if(--mCaptureGraphListenerCount == 0) +void SettingsModel::stopCaptureGraph() { + if (mCaptureGraphListenerCount > 0) { + if (--mCaptureGraphListenerCount == 0) { + qDebug() << "Stopping capture graph [" << mCaptureGraphListenerCount << "]"; deleteCaptureGraph(); + } } } void SettingsModel::stopCaptureGraphs() { @@ -383,6 +388,7 @@ void SettingsModel::accessAudioSettings() { // Media cards must not be used twice (capture card + call) else we will get latencies issues and bad echo calibrations in call. if (!getIsInCall()) { + qDebug() << "Starting capture graph from accessing audio panel"; startCaptureGraph(); } } @@ -2063,15 +2069,18 @@ void SettingsModel::setDeveloperSettingsEnabled (bool status) { void SettingsModel::handleCallCreated(const shared_ptr &) { bool isInCall = getIsInCall(); - if(isInCall) stopCaptureGraphs(); // Ensure to stop all graphs + if (isInCall) stopCaptureGraphs(); // Ensure to stop all graphs + else if (mCurrentSettingsTab == 1) startCaptureGraph(); emit isInCallChanged(isInCall); } void SettingsModel::handleCallStateChanged(const shared_ptr &, linphone::Call::State) { bool isInCall = getIsInCall(); - if(isInCall) stopCaptureGraphs(); // Ensure to stop all graphs + if (isInCall) stopCaptureGraphs(); // Ensure to stop all graphs + else if (mCurrentSettingsTab == 1) startCaptureGraph(); emit isInCallChanged(isInCall); } + void SettingsModel::handleEcCalibrationResult(linphone::EcCalibratorStatus status, int delayMs){ emit echoCancellationStatus((int)status, delayMs); } diff --git a/linphone-app/ui/views/App/Settings/SettingsAudio.qml b/linphone-app/ui/views/App/Settings/SettingsAudio.qml index c616f5534..8e1d8829b 100644 --- a/linphone-app/ui/views/App/Settings/SettingsAudio.qml +++ b/linphone-app/ui/views/App/Settings/SettingsAudio.qml @@ -320,8 +320,4 @@ TabContainer { } } } - Connections{ - target: SettingsModel - onIsInCallChanged: if(!SettingsModel.isInCall) SettingsModel.startCaptureGraph() - } }