diff options
author | Conor Curran <conor.curran@canonical.com> | 2011-02-28 12:45:19 +0000 |
---|---|---|
committer | Conor Curran <conor.curran@canonical.com> | 2011-02-28 12:45:19 +0000 |
commit | 8ec8d6d2abc55ddc140fc5d390ba2034b1fa6588 (patch) | |
tree | d023e0db28a21d330604132293a50f513307a06c | |
parent | 34f506610a83ae6f3570389268fa332f51c455a5 (diff) | |
download | ayatana-indicator-sound-8ec8d6d2abc55ddc140fc5d390ba2034b1fa6588.tar.gz ayatana-indicator-sound-8ec8d6d2abc55ddc140fc5d390ba2034b1fa6588.tar.bz2 ayatana-indicator-sound-8ec8d6d2abc55ddc140fc5d390ba2034b1fa6588.zip |
caught a edge case bug which was causing those weird crashes
-rw-r--r-- | src/pulseaudio-mgr.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/pulseaudio-mgr.c b/src/pulseaudio-mgr.c index 76102e4..a0199ea 100644 --- a/src/pulseaudio-mgr.c +++ b/src/pulseaudio-mgr.c @@ -220,11 +220,12 @@ pm_subscribed_events_callback (pa_context *c, } break; case PA_SUBSCRIPTION_EVENT_SOURCE: - g_debug ("Looks like source event of some description"); + g_debug ("Looks like source event of some description - index = %i", index); // We don't care about any other sink other than the active one. if (index != active_sink_get_source_index (sink)) return; if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + g_debug ("Source removal event - index = %i", index); active_sink_deactivate_voip_source (sink, FALSE); } else{ @@ -396,8 +397,8 @@ pm_sink_info_callback (pa_context *c, return; } else { - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("sink info callback - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || sink == NULL){ + g_warning ("sink info callback - our user data is not what we think it should be or the sink parameter is null"); return; } ActiveSink* a_sink = ACTIVE_SINK (userdata); @@ -418,8 +419,8 @@ pm_default_sink_info_callback (pa_context *c, return; } else { - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("Default sink info callback - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){ + g_warning ("Default sink info callback - our user data is not what we think it should be or the info parameter is null"); return; } // Only repopulate if there is a change with regards the index @@ -441,9 +442,8 @@ pm_sink_input_info_callback (pa_context *c, return; } else { - if (info == NULL) { - // TODO: watch this carefully - PA async api should not be doing this . . . - g_warning("\n Sink input info callback : SINK INPUT INFO IS NULL BUT EOL was not POSITIVE!!!"); + if (info == NULL || IS_ACTIVE_SINK (userdata) == FALSE) { + g_warning("Sink input info callback : SINK INPUT INFO IS NULL or our user_data is not what we think it should be"); return; } @@ -486,8 +486,8 @@ pm_update_active_sink (pa_context *c, return; } else{ - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("update_active_sink - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){ + g_warning ("update_active_sink - our user data is not what we think it should be or the info parameter is null"); return; } active_sink_update (ACTIVE_SINK(userdata), info); @@ -504,6 +504,11 @@ pm_toggle_mute_for_every_sink_callback (pa_context *c, return; } else { + if (IS_ACTIVE_SINK (userdata) == FALSE || sink == NULL){ + g_warning ("toggle_mute cb - our user data is not what we think it should be or the sink parameter is null"); + return; + } + pa_operation_unref (pa_context_set_sink_mute_by_index (c, sink->index, GPOINTER_TO_INT(userdata), @@ -523,8 +528,8 @@ pm_default_source_info_callback (pa_context *c, return; } else { - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("Default sink info callback - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){ + g_warning ("Default source info callback - our user data is not what we think it should be or the source info parameter is null"); return; } // If there is an index change we need to change our cached source @@ -546,8 +551,8 @@ pm_source_info_callback (pa_context *c, return; } else { - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("Default sink info callback - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL){ + g_warning ("source info callback - our user data is not what we think it should be or the source info parameter is null"); return; } // For now we will take the first available @@ -567,8 +572,8 @@ pm_update_source_info_callback (pa_context *c, return; } else { - if (IS_ACTIVE_SINK (userdata) == FALSE){ - g_warning ("Default sink info callback - our user data is not what we think it should be"); + if (IS_ACTIVE_SINK (userdata) == FALSE || info == NULL ){ + g_warning ("source info update callback - our user data is not what we think it should be or the source info paramter is null"); return; } g_debug ("Got a source update for %s , index %i", info->name, info->index); |