From: Jean-Philippe Andre Date: Wed, 24 Jun 2015 05:43:07 +0000 (+0900) Subject: Ecore_Audio: Avoid abort() in PulseAudio X-Git-Tag: v1.15.0-alpha1~163 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6db0ff42291ff4c44815df3a5f77c31ae1bad1ac;p=platform%2Fupstream%2Fefl.git 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. --- 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; }