[pulseaudio-discuss] [PATCH] Added loopback module option
archlinux at nicohood.de
archlinux at nicohood.de
Tue Feb 20 07:59:41 UTC 2018
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>
--
2.16.1
More information about the pulseaudio-discuss
mailing list