Blob Blame History Raw
There is no callback feature in Audacious < 2.2 that moves the UI's volume
slider when external volume controls are used. Hence stick to the internal
volume level and don't get confused when trying to save/restore external
volume levels.

diff -Nur audacious-plugins-fedora-2.1-orig/src/pulse_audio/pulse_audio.c audacious-plugins-fedora-2.1-pulseaudio/src/pulse_audio/pulse_audio.c
--- audacious-plugins-fedora-2.1-orig/src/pulse_audio/pulse_audio.c	2009-07-07 00:40:36.000000000 +0200
+++ audacious-plugins-fedora-2.1-pulseaudio/src/pulse_audio/pulse_audio.c	2009-10-21 22:44:06.149809732 +0200
@@ -80,6 +80,8 @@
 }
 
 static void info_cb(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) {
+    return;  /* we don't do anything useful with this callback */
+
     assert(c);
 
     if (!i)
@@ -709,6 +711,18 @@
         goto unlock_and_fail;
     }
 
+    pa_operation_unref(o);
+    /* set initial volume */
+    if (!(o = pa_context_set_sink_input_volume(context, pa_stream_get_index(stream), &volume, NULL, NULL))) {
+        g_warning("pa_context_set_sink_input_volume() failed: %s", pa_strerror(pa_context_errno(context)));
+        goto unlock_and_fail;
+    }
+    while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
+        CHECK_DEAD_GOTO(fail, 1);
+        pa_threaded_mainloop_wait(mainloop);
+    }
+    pa_operation_unref(o);
+
     do_trigger = 0;
     written = 0;
     time_offset_msec = 0;