summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-10-08 00:14:54 +0200
committerLennart Poettering <lennart@poettering.net>2008-10-08 00:14:54 +0200
commit37b8c45e2b4d996b328a4fc74f491498abbc9348 (patch)
treea4cd856e2eb82f3a8f3e14785c2bcff67ae6aacc /src
parent34f6a516b2e5fd0ca4143eed9831759fcbc89cb0 (diff)
query the sink volume outside of the loop because it might be quite expensive
Diffstat (limited to 'src')
-rw-r--r--src/modules/module-flat-volume.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/modules/module-flat-volume.c b/src/modules/module-flat-volume.c
index 25b5707e..9bc8055a 100644
--- a/src/modules/module-flat-volume.c
+++ b/src/modules/module-flat-volume.c
@@ -154,7 +154,7 @@ static void subscribe_callback(pa_core *core, pa_subscription_event_type_t t, ui
pa_sink *sink;
pa_sink_input *i;
uint32_t iidx;
- pa_cvolume this_volume;
+ pa_cvolume sink_volume;
pa_assert(core);
pa_assert(u);
@@ -172,10 +172,14 @@ static void subscribe_callback(pa_core *core, pa_subscription_event_type_t t, ui
pa_log_debug("Sink volume changed");
pa_log_debug("sink = %.2f", (double)pa_cvolume_avg(pa_sink_get_volume(sink, FALSE)) / PA_VOLUME_NORM);
+ sink_volume = *pa_sink_get_volume(sink, FALSE);
+
for (i = PA_SINK_INPUT(pa_idxset_first(sink->inputs, &iidx)); i; i = PA_SINK_INPUT(pa_idxset_next(sink->inputs, &iidx))) {
- this_volume = *pa_sink_get_volume(sink, FALSE);
- pa_cvolume_remap(&this_volume, &sink->channel_map, &i->channel_map);
- pa_sw_cvolume_multiply(&i->virtual_volume, &i->volume, &this_volume);
+ pa_cvolume si_volume;
+
+ si_volume = sink_volume;
+ pa_cvolume_remap(&si_volume, &sink->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->virtual_volume, &i->volume, &si_volume);
pa_log_debug("sink input = { id = %d, flat = %.2f, true = %.2f }",
i->index,
(double)pa_cvolume_avg(&i->virtual_volume)/PA_VOLUME_NORM,