From aa782278018f5a61bea98fecc80f58b029b3d211 Mon Sep 17 00:00:00 2001 From: Eloi BAIL <eloi.bail@savoirfairelinux.com> Date: Mon, 13 Jul 2015 11:41:47 -0400 Subject: [PATCH] daemon: emit signal when media parameters changed User is able to change media parameters / account. When a new parameter is set in daemon, a signal would be helpful to notify UI to refresh its media information. This patchset adds signal mediaParametersChanged broadcast if a new media parameter is succesfully set in daemon. AccoundID is also specified in parameters. Refs #77483 Change-Id: I2efc0b260da5774fa56cda74f64c8dec209552df --- bin/dbus/configurationmanager-introspec.xml | 13 +++++++++++++ bin/dbus/dbusclient.cpp | 1 + src/client/configurationmanager.cpp | 2 ++ src/client/ring_signal.cpp | 1 + src/dring/configurationmanager_interface.h | 4 ++++ 5 files changed, 21 insertions(+) diff --git a/bin/dbus/configurationmanager-introspec.xml b/bin/dbus/configurationmanager-introspec.xml index 7b4f0a596c..bb0003f2c1 100644 --- a/bin/dbus/configurationmanager-introspec.xml +++ b/bin/dbus/configurationmanager-introspec.xml @@ -982,5 +982,18 @@ <arg type="a{ss}" name="shortcutsMap" direction="in"> </arg> </method> + + <signal name="mediaParametersChanged" tp:name-for-bindings="mediaParametersChanged"> + <tp:added version="2.3.0"/> + <tp:docstring> + Notify clients that a media parameter changed. + </tp:docstring> + <arg type="s" name="accountID"> + <tp:docstring> + An account id. + </tp:docstring> + </arg> + </signal> + </interface> </node> diff --git a/bin/dbus/dbusclient.cpp b/bin/dbus/dbusclient.cpp index b15479c929..2250984447 100644 --- a/bin/dbus/dbusclient.cpp +++ b/bin/dbus/dbusclient.cpp @@ -192,6 +192,7 @@ DBusClient::initLibrary(int flags) exportable_callback<ConfigurationSignal::CertificatePathPinned>(bind(&DBusConfigurationManager::certificatePathPinned, confM, _1, _2 )), exportable_callback<ConfigurationSignal::CertificateExpired>(bind(&DBusConfigurationManager::certificateExpired, confM, _1 )), exportable_callback<ConfigurationSignal::CertificateStateChanged>(bind(&DBusConfigurationManager::certificateStateChanged, confM, _1, _2, _3 )), + exportable_callback<ConfigurationSignal::MediaParametersChanged>(bind(&DBusConfigurationManager::mediaParametersChanged, confM, _1 )), }; // Presence event handlers diff --git a/src/client/configurationmanager.cpp b/src/client/configurationmanager.cpp index 9df30eb2f8..e57cf050ff 100644 --- a/src/client/configurationmanager.cpp +++ b/src/client/configurationmanager.cpp @@ -401,6 +401,7 @@ setCodecDetails(const std::string& accountID, if (codec->systemCodecInfo.mediaType & ring::MEDIA_AUDIO) { if (auto foundCodec = std::static_pointer_cast<ring::AccountAudioCodecInfo>(codec)) { foundCodec->setCodecSpecifications(details); + ring::emitSignal<ConfigurationSignal::MediaParametersChanged>(accountID); return true; } } @@ -416,6 +417,7 @@ setCodecDetails(const std::string& accountID, auto call = ring::Manager::instance().getCurrentCall(); call->restartMediaSender(); } + ring::emitSignal<ConfigurationSignal::MediaParametersChanged>(accountID); return true; } } diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp index 8e4846731e..ac552d5b5b 100644 --- a/src/client/ring_signal.cpp +++ b/src/client/ring_signal.cpp @@ -76,6 +76,7 @@ getSignalHandlers() exported_callback<DRing::ConfigurationSignal::CertificateStateChanged>(), exported_callback<DRing::ConfigurationSignal::IncomingAccountMessage>(), exported_callback<DRing::ConfigurationSignal::IncomingTrustRequest>(), + exported_callback<DRing::ConfigurationSignal::MediaParametersChanged>(), exported_callback<DRing::ConfigurationSignal::Error>(), #ifdef __ANDROID__ exported_callback<DRing::ConfigurationSignal::GetHardwareAudioFormat>(), diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 537b5449f2..26075f6cce 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -210,6 +210,10 @@ struct ConfigurationSignal { constexpr static const char* name = "CertificateStateChanged"; using cb_type = void(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/); }; + struct MediaParametersChanged { + constexpr static const char* name = "MediaParametersChanged"; + using cb_type = void(const std::string& /*accountId*/); + }; #ifdef __ANDROID__ /** * These are special getters for Android so the daemon can retreive -- GitLab