[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kmix/kmix-improvements] src: Add level value to volumeChange signal, and queue updates until they h
From:       Trever Fischer <tdfischer () fedoraproject ! org>
Date:       2013-02-19 19:56:03
Message-ID: 20130219195603.24E37A60D4 () git ! kde ! org
[Download RAW message or body]

Git commit 7f1096d529dd2fbffbb9016f1e096dbc948a72ca by Trever Fischer.
Committed on 27/09/2012 at 18:12.
Pushed by tdfischer into branch 'kmix-improvements'.

Add level value to volumeChange signal, and queue updates until they have changed

M  +1    -1    src/daemon/Control.h
M  +2    -2    src/daemon/KMixDApp.cpp
M  +5    -1    src/daemon/backends/PulseControl.cpp
M  +1    -0    src/dbus/org.kde.kmix.control.xml
M  +3    -4    src/gui/ControlSlider.cpp
M  +1    -1    src/gui/ControlSlider.h

http://commits.kde.org/kmix/7f1096d529dd2fbffbb9016f1e096dbc948a72ca

diff --git a/src/daemon/Control.h b/src/daemon/Control.h
index 215c6c1..6d71d14 100644
--- a/src/daemon/Control.h
+++ b/src/daemon/Control.h
@@ -98,7 +98,7 @@ public:
     bool canChangeTarget() const;
     QString currentTarget() const;
 signals:
-    void volumeChanged(int c);
+    void volumeChanged(int c, int v);
     void muteChanged(bool muted);
     void removed();
     void currentTargetChanged(const QString &path);
diff --git a/src/daemon/KMixDApp.cpp b/src/daemon/KMixDApp.cpp
index 9c8e3e5..8673324 100644
--- a/src/daemon/KMixDApp.cpp
+++ b/src/daemon/KMixDApp.cpp
@@ -93,10 +93,10 @@ void KMixDApp::controlAdded(Control *control)
 {
     if (control->category() == Control::HardwareOutput) {
         if (m_master)
-            disconnect(m_master, SIGNAL(volumeChanged(int)), this, SIGNAL(masterVolumeChanged()));
+            disconnect(m_master, SIGNAL(volumeChanged(int, int)), this, SIGNAL(masterVolumeChanged()));
         m_master = control;
         emit masterChanged(QString("/controls/%1").arg(m_master->id()));
-        connect(m_master, SIGNAL(volumeChanged(int)), this, SIGNAL(masterVolumeChanged()));
+        connect(m_master, SIGNAL(volumeChanged(int, int)), this, SIGNAL(masterVolumeChanged()));
     }
 }
 
diff --git a/src/daemon/backends/PulseControl.cpp b/src/daemon/backends/PulseControl.cpp
index a6ad6f8..1e6f90e 100644
--- a/src/daemon/backends/PulseControl.cpp
+++ b/src/daemon/backends/PulseControl.cpp
@@ -70,14 +70,18 @@ bool PulseControl::canMute() const
 
 void PulseControl::updateVolumes(const pa_cvolume &volumes)
 {
+    QList<int> volumeUpdates;
     if (m_volumes.channels == volumes.channels) {
         for (int channel = 0;channel < volumes.channels;channel++) {
             if (m_volumes.values[channel] != volumes.values[channel]) {
-                emit volumeChanged((Channel)channel);
+                volumeUpdates << channel;
             }
         }
     }
     m_volumes = volumes;
+    foreach(int channel, volumeUpdates) {
+        emit volumeChanged((Channel)channel, m_volumes.values[channel]);
+    }
 }
 
 void PulseControl::startMonitor()
diff --git a/src/dbus/org.kde.kmix.control.xml b/src/dbus/org.kde.kmix.control.xml
index cbf8ed5..a8dfd60 100644
--- a/src/dbus/org.kde.kmix.control.xml
+++ b/src/dbus/org.kde.kmix.control.xml
@@ -38,6 +38,7 @@
     </method>
     <signal name="volumeChanged">
         <arg name="channel" type="i"/>
+        <arg name="level" type="i"/>
     </signal>
     <signal name="removed"/>
     <method name="subscribeMonitor">
diff --git a/src/gui/ControlSlider.cpp b/src/gui/ControlSlider.cpp
index 5ed794d..30f0d95 100644
--- a/src/gui/ControlSlider.cpp
+++ b/src/gui/ControlSlider.cpp
@@ -106,7 +106,7 @@ ControlSlider::ControlSlider(org::kde::KMix::Control *control, QWidget *parent)
     }
 
     updateMute();
-    connect(control, SIGNAL(volumeChanged(int)), this, SLOT(volumeChange(int)));
+    connect(control, SIGNAL(volumeChanged(int, int)), this, SLOT(volumeChange(int, int)));
     connect(control, SIGNAL(muteChanged(bool)), this, SLOT(updateMute()));
     connect(control, SIGNAL(currentTargetChanged(QString)), this, SLOT(handleTargetChange()));
 
@@ -116,10 +116,9 @@ ControlSlider::~ControlSlider()
 {
 }
 
-void ControlSlider::volumeChange(int channel)
+void ControlSlider::volumeChange(int channel, int level)
 {
-    qDebug() << "Updated volume on" << channel << m_control->getVolume(channel);
-    m_sliders[channel]->setValue(m_control->getVolume(channel));
+    m_sliders[channel]->setValue(level);
 }
 
 void ControlSlider::updateVolume(int channel)
diff --git a/src/gui/ControlSlider.h b/src/gui/ControlSlider.h
index cff70f8..ad1d304 100644
--- a/src/gui/ControlSlider.h
+++ b/src/gui/ControlSlider.h
@@ -44,7 +44,7 @@ public:
     explicit ControlSlider(org::kde::KMix::Control *control, QWidget *parent = 0);
     ~ControlSlider();
 private slots:
-    void volumeChange(int channel);
+    void volumeChange(int channel, int level);
     void updateVolume(int channel);
     void updateMute();
     void toggleMute();

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic