From: NicoHood <[email protected]>

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

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to