Hello.

On 25/06/15 08:15, Jean-Philippe ANDRÉ wrote:
> jpeg pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=6db0ff42291ff4c44815df3a5f77c31ae1bad1ac
>
> commit 6db0ff42291ff4c44815df3a5f77c31ae1bad1ac
> Author: Jean-Philippe Andre <[email protected]>
> Date:   Wed Jun 24 14:43:07 2015 +0900
>
>      Ecore_Audio: Avoid abort() in PulseAudio
>      
>      In some cases (stress test), pulseaudio fails to play a sound
>      and pa_stream_drain() returns NULL, making pa_operation_unref()
>      crash right after.

If this is what I think it is then it will be the hero commit of the 
month if not quarter :)

Let's see if we see any more ecore_audio test segfaults after this one. 
Good job!

regards
Stefan Schmidt

> ---
>   src/lib/ecore_audio/ecore_audio_obj_out_pulse.c | 9 ++++++++-
>   1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c 
> b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
> index 901d9f6..eab7464 100644
> --- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
> +++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
> @@ -184,6 +184,7 @@ _ecore_audio_out_pulse_ecore_audio_out_input_detach(Eo 
> *eo_obj, Ecore_Audio_Out_
>   {
>     pa_stream *stream = NULL;
>     Eina_Bool ret2 = EINA_FALSE;
> +  pa_operation *op;
>   
>     eo_do_super(eo_obj, MY_CLASS, ret2 = 
> ecore_audio_obj_out_input_detach(in));
>     if (!ret2)
> @@ -192,8 +193,14 @@ _ecore_audio_out_pulse_ecore_audio_out_input_detach(Eo 
> *eo_obj, Ecore_Audio_Out_
>     eo_do(in, stream = eo_key_data_get("pulse_data"));
>   
>     pa_stream_set_write_callback(stream, NULL, NULL);
> -  pa_operation_unref(pa_stream_drain(stream, _drain_cb, NULL));
> +  op = pa_stream_drain(stream, _drain_cb, NULL);
> +  if (!op)
> +    {
> +       ERR("Failed to drain PulseAudio stream.");
> +       return EINA_FALSE;
> +    }
>   
> +  pa_operation_unref(op);
>     return EINA_TRUE;
>   }
>   
>


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to