[pulseaudio-discuss] [PATCH] Added loopback module option
NicoHood
pulseaudio-discuss at nicohood.de
Sun Mar 18 15:59:13 UTC 2018
On 02/20/2018 08:59 AM, archlinux at nicohood.de wrote:
> From: NicoHood <git at nicohood.de>
>
> ---
> src/paprefs.cc | 34 ++++++++++++++++++++++++++++++++++
> src/paprefs.glade | 17 ++++++++++++++++-
> 2 files changed, 50 insertions(+), 1 deletion(-)
>
> diff --git a/src/paprefs.cc b/src/paprefs.cc
> index ca6d9bf..793bb29 100644
> --- a/src/paprefs.cc
> +++ b/src/paprefs.cc
> @@ -62,6 +62,7 @@ public:
> *rtpLoopbackCheckButton,
> *rtpPortCheckButton,
> *combineCheckButton,
> + *loopbackCheckButton,
> *upnpMediaServerCheckButton,
> *upnpNullSinkCheckButton;
>
> @@ -84,6 +85,7 @@ public:
> void onChangeRtpReceive();
> void onChangeRtpSend();
> void onChangeCombine();
> + void onChangeLoopback();
> void onChangeUpnp();
>
> void onZeroconfDiscoverInstallButtonClicked();
> @@ -105,6 +107,7 @@ public:
> void writeToGConfRtpReceive();
> void writeToGConfRtpSend();
> void writeToGConfCombine();
> + void writeToGConfLoopback();
> void writeToGConfUPnP();
>
> void onGConfChange(const Glib::ustring& key, const Gnome::Conf::Value& value);
> @@ -149,6 +152,7 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade:
> x->get_widget("rtpLoopbackCheckButton", rtpLoopbackCheckButton);
> x->get_widget("rtpPortCheckButton", rtpPortCheckButton);
> x->get_widget("combineCheckButton", combineCheckButton);
> + x->get_widget("loopbackCheckButton", loopbackCheckButton);
> x->get_widget("upnpMediaServerCheckButton", upnpMediaServerCheckButton);
> x->get_widget("upnpNullSinkCheckButton", upnpNullSinkCheckButton);
>
> @@ -185,6 +189,7 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade:
> rtpNullSinkRadioButton->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::onChangeRtpSend));
>
> combineCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::onChangeCombine));
> + loopbackCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::onChangeLoopback));
>
> upnpMediaServerCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::onChangeUpnp));
> upnpNullSinkCheckButton->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::onChangeUpnp));
> @@ -292,6 +297,13 @@ void MainWindow::onChangeCombine() {
> writeToGConfCombine();
> }
>
> +void MainWindow::onChangeLoopback() {
> + if (ignoreChanges)
> + return;
> +
> + writeToGConfLoopback();
> +}
> +
> void MainWindow::onChangeUpnp() {
>
> if (ignoreChanges)
> @@ -407,6 +419,27 @@ void MainWindow::writeToGConfCombine() {
> gconf->suggest_sync();
> }
>
> +void MainWindow::writeToGConfLoopback() {
> + Gnome::Conf::ChangeSet changeSet;
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/locked", true);
> + gconf->change_set_commit(changeSet, true);
> +
> + if (loopbackCheckButton->get_active()) {
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/name0", Glib::ustring("module-loopback"));
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/args0", Glib::ustring(""));
> +
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/enabled", true);
> + } else
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/enabled", false);
> +
> + gconf->change_set_commit(changeSet, true);
> +
> + changeSet.set(PA_GCONF_PATH_MODULES"/loopback/locked", false);
> + gconf->change_set_commit(changeSet, true);
> +
> + gconf->suggest_sync();
> +}
> +
> void MainWindow::writeToGConfRemoteAccess() {
> Gnome::Conf::ChangeSet changeSet;
> bool zeroconfEnabled, anonymousEnabled;
> @@ -644,6 +677,7 @@ void MainWindow::readFromGConf() {
> rtpNullSinkRadioButton->set_active(TRUE);
>
> combineCheckButton->set_active(gconf->get_bool(PA_GCONF_PATH_MODULES"/combine/enabled"));
> + loopbackCheckButton->set_active(gconf->get_bool(PA_GCONF_PATH_MODULES"/loopback/enabled"));
>
> upnpMediaServerCheckButton->set_active(gconf->get_bool(PA_GCONF_PATH_MODULES"/upnp-media-server/enabled"));
> upnpNullSinkCheckButton->set_active(gconf->get_bool(PA_GCONF_PATH_MODULES"/upnp-media-server/null-sink-enabled"));
> diff --git a/src/paprefs.glade b/src/paprefs.glade
> index da6b891..293f991 100644
> --- a/src/paprefs.glade
> +++ b/src/paprefs.glade
> @@ -581,6 +581,21 @@
> <property name="position">0</property>
> </packing>
> </child>
> + <child>
> + <widget class="GtkCheckButton" id="loopbackCheckButton">
> + <property name="label" translatable="yes">Add _loopback output device for routing audio from a source to a sink</property>
> + <property name="visible">True</property>
> + <property name="can_focus">True</property>
> + <property name="receives_default">False</property>
> + <property name="use_underline">True</property>
> + <property name="draw_indicator">True</property>
> + </widget>
> + <packing>
> + <property name="expand">False</property>
> + <property name="fill">False</property>
> + <property name="position">1</property>
> + </packing>
> + </child>
> </widget>
> <packing>
> <property name="position">3</property>
> @@ -590,7 +605,7 @@
> <widget class="GtkLabel" id="label4">
> <property name="visible">True</property>
> <property name="can_focus">False</property>
> - <property name="label" translatable="yes">Simultaneous _Output</property>
> + <property name="label" translatable="yes">_Miscellaneous</property>
> <property name="use_underline">True</property>
> </widget>
> <packing>
>
*Push*
The changes are trivial, would be nice if someone can merge it and give
it a new tag. My other (already merged) fix about the fixed rtp port
would then also be included in paprefs :)
~Nico
More information about the pulseaudio-discuss
mailing list