diff options
author | Conor Curran <conor.curran@canonical.com> | 2011-03-01 18:51:37 +0000 |
---|---|---|
committer | Conor Curran <conor.curran@canonical.com> | 2011-03-01 18:51:37 +0000 |
commit | 031015221d4551339e14b31838d364386952a63b (patch) | |
tree | 59b43fe67ff7e4588ab2a1b3f06fd65e21532511 | |
parent | 45e0f3f3b6bc6b084219ef47f1822c3f666b9a58 (diff) | |
download | ayatana-indicator-sound-031015221d4551339e14b31838d364386952a63b.tar.gz ayatana-indicator-sound-031015221d4551339e14b31838d364386952a63b.tar.bz2 ayatana-indicator-sound-031015221d4551339e14b31838d364386952a63b.zip |
fix for reconnect bug while autospawn is true
-rw-r--r-- | src/pulseaudio-mgr.c | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/src/pulseaudio-mgr.c b/src/pulseaudio-mgr.c index a0199ea..17545a4 100644 --- a/src/pulseaudio-mgr.c +++ b/src/pulseaudio-mgr.c @@ -31,6 +31,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <pulse/error.h> #include "pulseaudio-mgr.h" +#include "config.h" #define RECONNECT_DELAY 5 @@ -116,24 +117,44 @@ Method which connects to the pulse server and is used to track reconnects. static gboolean reconnect_to_pulse (gpointer user_data) { - g_debug("Attempt to reconnect to pulse"); + g_debug("Attempt a pulse connection"); // reset + g_return_val_if_fail (IS_ACTIVE_SINK (user_data), FALSE); + connection_attempts += 1; if (pulse_context != NULL) { pa_context_unref(pulse_context); pulse_context = NULL; } - pulse_context = pa_context_new( pa_glib_mainloop_get_api( pa_main_loop ), - "com.canonical.indicators.sound" ); + pa_proplist *proplist; + + proplist = pa_proplist_new (); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_NAME, + "Indicator Sound"); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_ID, + "com.canonical.indicators.sound"); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_ICON_NAME, + "multimedia-volume-control"); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_VERSION, + PACKAGE_VERSION); + + pulse_context = pa_context_new_with_proplist (pa_glib_mainloop_get_api( pa_main_loop ), + NULL, + proplist); + pa_proplist_free (proplist); g_assert(pulse_context); pa_context_set_state_callback (pulse_context, pm_context_state_callback, user_data); int result = pa_context_connect (pulse_context, NULL, - PA_CONTEXT_NOFAIL, - user_data); + (pa_context_flags_t)PA_CONTEXT_NOFAIL, + NULL); if (result < 0) { g_warning ("Failed to connect context: %s", @@ -280,8 +301,10 @@ pm_context_state_callback (pa_context *c, void *userdata) g_debug("connecting - waiting for the server to become available"); break; case PA_CONTEXT_AUTHORIZING: + g_debug ("Authorizing"); break; case PA_CONTEXT_SETTING_NAME: + g_debug ("Setting name"); break; case PA_CONTEXT_FAILED: g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?"); @@ -289,10 +312,11 @@ pm_context_state_callback (pa_context *c, void *userdata) if (reconnect_idle_id == 0){ reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY, reconnect_to_pulse, - userdata); + (gpointer)userdata); } break; case PA_CONTEXT_TERMINATED: + g_debug ("Terminated"); break; case PA_CONTEXT_READY: connection_attempts = 0; @@ -579,4 +603,4 @@ pm_update_source_info_callback (pa_context *c, g_debug ("Got a source update for %s , index %i", info->name, info->index); active_sink_update_voip_input_source (ACTIVE_SINK (userdata), info); } -}
\ No newline at end of file +} |