Review: Approve
  review approve

On Mon, 2010-03-29 at 17:28 +0000, Conor Curran wrote:
> Conor Curran has proposed merging 
> lp:~cjcurran/indicator-sound/crash_sink_removal into lp:indicator-sound.
> 
> Requested reviews:
>   Indicator Applet Developers (indicator-applet-developers)
> Related bugs:
>   #522428 indicator-sound-service crashed with SIGSEGV in pa_pdispatch_run()
>   https://bugs.launchpad.net/bugs/522428
> 
> 
> Tidies up the whole area of hotswapping audio devices. Before I was leaving 
> old invalid sink data in the sink_hash - now it is removed and destroyed.
> also now the update_sink_info callback doesn't assume the info pointer is 
> valid. (Bug #522428).  
> 
> differences between files attachment (review-diff.txt)
> === modified file 'src/pulse-manager.c'
> --- src/pulse-manager.c       2010-03-25 10:35:30 +0000
> +++ src/pulse-manager.c       2010-03-29 17:28:23 +0000
> @@ -67,7 +67,6 @@
>  
>      // Establish event callback registration
>       pa_context_set_state_callback(pulse_context, context_state_callback, 
> NULL);
> -    // Broadcast init state (assume we have a device - if not the signals 
> will handle it)
>      dbus_menu_manager_update_pa_state(FALSE, FALSE, FALSE, 0);
>       pa_context_connect(pulse_context, NULL, PA_CONTEXT_NOFAIL, NULL);    
>  }
> @@ -359,9 +358,14 @@
>          g_warning("Sink INPUT info callback failure");
>          return;
>      }
> -
> +    gint position = -1;
>      GList *keys = g_hash_table_get_keys(sink_hash);
> -    gint position =  g_list_index(keys, GINT_TO_POINTER(info->index));
> +
> +    if(info == NULL)
> +        return;
> +    
> +    position =  g_list_index(keys, GINT_TO_POINTER(info->index));
> +
>      if(position >= 0) // => index is within the keys of the hash.
>      {
>          sink_info *s = g_hash_table_lookup(sink_hash, 
> GINT_TO_POINTER(info->index));
> @@ -459,11 +463,14 @@
>              {
>                  if(index == DEFAULT_SINK_INDEX){
>                      g_debug("PA_SUBSCRIPTION_EVENT_SINK REMOVAL event 
> triggered - default sink has been removed !! \n updating UI to reflect the 
> change");  
> -                    
> sound_service_dbus_update_sink_availability(dbus_service, FALSE);    
> +                    gboolean availability = determine_sink_availability();
> +                    
> sound_service_dbus_update_sink_availability(dbus_service, availability);    
>                  }
>                  else{
>                      g_debug("PA_SUBSCRIPTION_EVENT_SINK REMOVAL - some 
> device other than the default - no panic");
>                  }
> +                g_debug("removing sink of index %i from our sink hash - keep 
> the cache tidy !", index);
> +                g_hash_table_remove(sink_hash, GINT_TO_POINTER(index)); 
>              } 
>              else 
>              {
> @@ -474,7 +481,7 @@
>                       g_debug("PA_SUBSCRIPTION_EVENT_SINK_INPUT event 
> triggered!!");
>              if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == 
> PA_SUBSCRIPTION_EVENT_REMOVE)
>              {
> -                //handle the remove event - not relevant for current design
> +                //handle the sink input remove event - not relevant for 
> current design
>              }            
>              else 
>              {                        
> 


-- 
https://code.launchpad.net/~cjcurran/indicator-sound/crash_sink_removal/+merge/22387
Your team ayatana-commits is subscribed to branch lp:indicator-sound.

_______________________________________________
Mailing list: https://launchpad.net/~ayatana-commits
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ayatana-commits
More help   : https://help.launchpad.net/ListHelp

Reply via email to