--- gnome-settings-daemon-3.3.90.1/plugins/media-keys/cut-n-paste/gvc-mixer-control.c.orig 2012-02-21 20:08:35.468041032 +0100 +++ gnome-settings-daemon-3.3.90.1/plugins/media-keys/cut-n-paste/gvc-mixer-control.c 2012-02-21 20:53:12.920202696 +0100 @@ -47,6 +47,7 @@ #define GVC_MIXER_CONTROL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControlPrivate)) #define RECONNECT_DELAY 5 +#define RECONNECT_TRIES 12 enum { PROP_0, @@ -60,6 +61,7 @@ struct GvcMixerControlPrivate pa_context *pa_context; int n_outstanding; guint reconnect_id; + guint reconnect_nr; char *name; gboolean default_sink_is_set; @@ -1941,8 +1943,11 @@ _pa_context_state_cb (pa_context *contex case PA_CONTEXT_FAILED: control->priv->state = GVC_STATE_FAILED; g_signal_emit (control, signals[STATE_CHANGED], 0, GVC_STATE_FAILED); - if (control->priv->reconnect_id == 0) + if ((control->priv->reconnect_id == 0) && (control->priv->reconnect_nr < RECONNECT_TRIES)) control->priv->reconnect_id = g_timeout_add_seconds (RECONNECT_DELAY, idle_reconnect, control); + else if (control->priv->reconnect_nr >= RECONNECT_TRIES) + g_warning ("Maximum reconnection retries reached."); + control->priv->reconnect_nr++; break; case PA_CONTEXT_TERMINATED: