[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