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

List:       kde-commits
Subject:    [kmix/kmix-improvements] src/daemon/backends: daemon: pulseaudio: Fix missing volume notifications
From:       Trever Fischer <tdfischer () kde ! org>
Date:       2013-02-20 14:18:14
Message-ID: 20130220141814.9493CA60DA () git ! kde ! org
[Download RAW message or body]

Git commit e81e7251e72a4f132371b1578842ffa7d143e5c5 by Trever Fischer.
Committed on 20/02/2013 at 14:45.
Pushed by tdfischer into branch 'kmix-improvements'.

daemon: pulseaudio: Fix missing volume notifications

M  +6    -1    src/daemon/backends/PulseControl.cpp
M  +1    -0    src/daemon/backends/PulseControl.h
M  +4    -1    src/daemon/backends/PulseSinkControl.cpp
M  +3    -1    src/daemon/backends/PulseSinkInputControl.cpp
M  +3    -1    src/daemon/backends/PulseSourceControl.cpp
M  +3    -1    src/daemon/backends/PulseSourceOutputControl.cpp

http://commits.kde.org/kmix/e81e7251e72a4f132371b1578842ffa7d143e5c5

diff --git a/src/daemon/backends/PulseControl.cpp \
b/src/daemon/backends/PulseControl.cpp index 1e6f90e..2ce0375 100644
--- a/src/daemon/backends/PulseControl.cpp
+++ b/src/daemon/backends/PulseControl.cpp
@@ -68,6 +68,11 @@ bool PulseControl::canMute() const
     return true;
 }
 
+void PulseControl::notifyVolumeUpdate(Channel c)
+{
+    emit volumeChanged(c, m_volumes.values[c]);
+}
+
 void PulseControl::updateVolumes(const pa_cvolume &volumes)
 {
     QList<int> volumeUpdates;
@@ -80,7 +85,7 @@ void PulseControl::updateVolumes(const pa_cvolume &volumes)
     }
     m_volumes = volumes;
     foreach(int channel, volumeUpdates) {
-        emit volumeChanged((Channel)channel, m_volumes.values[channel]);
+        notifyVolumeUpdate((Channel)channel);
     }
 }
 
diff --git a/src/daemon/backends/PulseControl.h b/src/daemon/backends/PulseControl.h
index 577171c..77b1c87 100644
--- a/src/daemon/backends/PulseControl.h
+++ b/src/daemon/backends/PulseControl.h
@@ -46,6 +46,7 @@ signals:
     void scheduleRefresh(int index);
 protected:
     static void cb_refresh(pa_context *c, int success, void* user_data);
+    void notifyVolumeUpdate(Channel c);
     void updateVolumes(const pa_cvolume &volumes);
     void stopMonitor();
     void startMonitor();
diff --git a/src/daemon/backends/PulseSinkControl.cpp \
b/src/daemon/backends/PulseSinkControl.cpp index aa1cdd2..8f84053 100644
--- a/src/daemon/backends/PulseSinkControl.cpp
+++ b/src/daemon/backends/PulseSinkControl.cpp
@@ -32,9 +32,11 @@ PulseSinkControl::PulseSinkControl(pa_context *cxt, const \
pa_sink_info *info, Pu  
 void PulseSinkControl::setVolume(Channel c, int v)
 {
-    m_volumes.values[(int)c] = v;
+    m_volumes.values[(int)c] = qMax(0, v);
     if (!pa_context_set_sink_volume_by_index(m_context, m_idx, &m_volumes, NULL, \
NULL)) {  qWarning() << "pa_context_set_sink_volume_by_index() failed";
+    } else {
+        notifyVolumeUpdate(c);
     }
 }
 
@@ -50,6 +52,7 @@ void PulseSinkControl::update(const pa_sink_info *info)
     m_iconName = QString::fromUtf8(pa_proplist_gets(info->proplist, \
PA_PROP_DEVICE_ICON_NAME));  updateVolumes(info->volume);
     if (m_muted != info->mute) {
+        qDebug() << "Mute changed";
         emit muteChanged(info->mute);
     }
     m_muted = info->mute;
diff --git a/src/daemon/backends/PulseSinkInputControl.cpp \
b/src/daemon/backends/PulseSinkInputControl.cpp index 8a05389..ee88683 100644
--- a/src/daemon/backends/PulseSinkInputControl.cpp
+++ b/src/daemon/backends/PulseSinkInputControl.cpp
@@ -35,9 +35,11 @@ PulseSinkInputControl::PulseSinkInputControl(pa_context *cxt, \
const pa_sink_inpu  
 void PulseSinkInputControl::setVolume(Channel c, int v)
 {
-    m_volumes.values[(int)c] = v;
+    m_volumes.values[(int)c] = qMax(0, v);
     if (!pa_context_set_sink_input_volume(m_context, m_idx, &m_volumes, NULL, NULL)) \
{  qWarning() << "pa_context_set_sink_input_volume() failed";
+    } else {
+        notifyVolumeUpdate(c);
     }
 }
 
diff --git a/src/daemon/backends/PulseSourceControl.cpp \
b/src/daemon/backends/PulseSourceControl.cpp index 1ab1017..d98a0b4 100644
--- a/src/daemon/backends/PulseSourceControl.cpp
+++ b/src/daemon/backends/PulseSourceControl.cpp
@@ -34,9 +34,11 @@ PulseSourceControl::PulseSourceControl(pa_context *cxt, const \
pa_source_info *in  
 void PulseSourceControl::setVolume(Channel c, int v)
 {
-    m_volumes.values[(int)c] = v;
+    m_volumes.values[(int)c] = qMax(0, v);
     if (!pa_context_set_source_volume_by_index(m_context, m_idx, &m_volumes, NULL, \
NULL)) {  qWarning() << "pa_context_set_source_volume_by_index() failed";
+    } else {
+        notifyVolumeUpdate(c);
     }
 }
 
diff --git a/src/daemon/backends/PulseSourceOutputControl.cpp \
b/src/daemon/backends/PulseSourceOutputControl.cpp index 3220e2b..ea41ef5 100644
--- a/src/daemon/backends/PulseSourceOutputControl.cpp
+++ b/src/daemon/backends/PulseSourceOutputControl.cpp
@@ -32,9 +32,11 @@ PulseSourceOutputControl::PulseSourceOutputControl(pa_context \
*cxt, const pa_sou  
 void PulseSourceOutputControl::setVolume(Channel c, int v)
 {
-    m_volumes.values[(int)c] = v;
+    m_volumes.values[(int)c] = qMax(0, v);
     if (!pa_context_set_source_output_volume(m_context, m_idx, &m_volumes, NULL, \
NULL)) {  qWarning() << "pa_context_set_source_output_volume() failed";
+    } else {
+        notifyVolumeUpdate(c);
     }
 }
 


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

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