after calling PA_CORE_HOOK_SINK_SET_VOLUME hook, check again whether the volume changed
authorLennart Poettering <lennart@poettering.net>
Tue, 7 Oct 2008 20:47:32 +0000 (22:47 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 7 Oct 2008 20:47:32 +0000 (22:47 +0200)
src/pulsecore/sink.c

index 7e92049..d8d1f79 100644 (file)
@@ -856,8 +856,12 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume) {
 
     changed = !pa_cvolume_equal(&data.volume, &s->volume);
 
-    if (changed && pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SINK_SET_VOLUME], &data) < 0)
-        return;
+    if (changed) {
+        if (pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SINK_SET_VOLUME], &data) < 0)
+            return;
+
+        changed = !pa_cvolume_equal(&data.volume, &s->volume);
+    }
 
     s->volume = data.volume;