From e99ab4623a936e06758ae837fadd183d89d8c5d1 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Thu, 18 Apr 2013 19:21:05 +0100 Subject: [PATCH] ecore_audio: Add return value to input_attach method Signed-off-by: Daniel Willmann --- src/examples/ecore/ecore_audio_custom.c | 2 +- src/examples/ecore/ecore_audio_playback.c | 8 ++++---- src/examples/ecore/ecore_audio_to_ogg.c | 2 +- src/lib/ecore_audio/ecore_audio_obj_out.c | 3 +++ src/lib/ecore_audio/ecore_audio_obj_out.h | 2 +- src/lib/ecore_audio/ecore_audio_obj_out_pulse.c | 16 ++++++++++++---- .../ecore_audio/ecore_audio_obj_out_sndfile.c | 3 ++- src/lib/edje/edje_multisense.c | 4 ++-- src/tests/ecore/ecore_test_ecore_audio.c | 6 +++--- 9 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/examples/ecore/ecore_audio_custom.c b/src/examples/ecore/ecore_audio_custom.c index 2f16ec9d0f..2b6d1335f8 100644 --- a/src/examples/ecore/ecore_audio_custom.c +++ b/src/examples/ecore/ecore_audio_custom.c @@ -66,7 +66,7 @@ main(int argc, const char *argv[]) eo_do(in, ecore_audio_obj_volume_set(0.7)); eo_do(in, ecore_audio_obj_vio_set(&vio, NULL, NULL)); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); ecore_main_loop_begin(); diff --git a/src/examples/ecore/ecore_audio_playback.c b/src/examples/ecore/ecore_audio_playback.c index bdfd7db201..c3314eeba3 100644 --- a/src/examples/ecore/ecore_audio_playback.c +++ b/src/examples/ecore/ecore_audio_playback.c @@ -64,7 +64,7 @@ handle_cmd(char *cmd, size_t bread) ecore_audio_obj_in_length_get(&length)); printf("Start: %s (%0.2fs)\n", name, length); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); } else { @@ -83,7 +83,7 @@ handle_cmd(char *cmd, size_t bread) ecore_audio_obj_in_length_get(&length)); printf("Start: %s (%0.2fs)\n", name, length); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); } } else if (!strncmp(cmd, "l", bread)) @@ -214,7 +214,7 @@ static Eina_Bool _play_finished(void *data EINA_UNUSED, Eo *in, const Eo_Event_D eo_do(in, ecore_audio_obj_name_get(&name)); printf("Start: %s\n", name); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); } else { @@ -296,7 +296,7 @@ main(int argc, const char *argv[]) printf("Start: %s (%0.2fs)\n", name, length); out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); /* Disable canonical mode for stdin */ diff --git a/src/examples/ecore/ecore_audio_to_ogg.c b/src/examples/ecore/ecore_audio_to_ogg.c index 88035cb409..e5d05ce278 100644 --- a/src/examples/ecore/ecore_audio_to_ogg.c +++ b/src/examples/ecore/ecore_audio_to_ogg.c @@ -58,7 +58,7 @@ main(int argc, const char *argv[]) out = eo_add(ECORE_AUDIO_OBJ_OUT_SNDFILE_CLASS, NULL); eo_do(out, ecore_audio_obj_source_set("foo.ogg")); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); ecore_main_loop_begin(); diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.c b/src/lib/ecore_audio/ecore_audio_obj_out.c index f4d39fdf80..141d26bc17 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out.c @@ -25,6 +25,7 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Input *in; Eo *input = va_arg(*list, Eo *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); in = eo_data_get(input, ECORE_AUDIO_OBJ_IN_CLASS); @@ -37,6 +38,8 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) obj->inputs = eina_list_append(obj->inputs, input); + if (ret) + *ret = EINA_TRUE; } static void _input_detach(Eo *eo_obj, void *_pd, va_list *list) diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.h b/src/lib/ecore_audio/ecore_audio_obj_out.h index 7fc0cf7dd5..ec5e9bf773 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out.h +++ b/src/lib/ecore_audio/ecore_audio_obj_out.h @@ -49,7 +49,7 @@ enum Ecore_Audio_Obj_Out_Sub_Ids #define ECORE_AUDIO_OBJ_OUT_ID(sub_id) (ECORE_AUDIO_OBJ_OUT_BASE_ID + EO_TYPECHECK(enum Ecore_Audio_Obj_Out_Sub_Ids, sub_id)) -#define ecore_audio_obj_out_input_attach(input) ECORE_AUDIO_OBJ_OUT_ID(ECORE_AUDIO_OBJ_OUT_SUB_ID_INPUT_ATTACH), EO_TYPECHECK(Eo *, input) +#define ecore_audio_obj_out_input_attach(input, ret) ECORE_AUDIO_OBJ_OUT_ID(ECORE_AUDIO_OBJ_OUT_SUB_ID_INPUT_ATTACH), EO_TYPECHECK(Eo *, input), EO_TYPECHECK(Eina_Bool *, ret) #define ecore_audio_obj_out_input_detach(input) ECORE_AUDIO_OBJ_OUT_ID(ECORE_AUDIO_OBJ_OUT_SUB_ID_INPUT_DETACH), EO_TYPECHECK(Eo *, input) 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 c103b738cd..3e3a1ba490 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c @@ -106,12 +106,13 @@ static Eina_Bool _update_samplerate_cb(void *data, Eo *eo_obj, const Eo_Event_De pa_operation_unref(pa_stream_update_sample_rate(stream, samplerate * speed, NULL, NULL)); } -static void _input_attach_internal(Eo *eo_obj, Eo *in) +static Eina_Bool _input_attach_internal(Eo *eo_obj, Eo *in) { const char *name; pa_sample_spec ss; double speed; pa_stream *stream; + Eina_Bool ret; Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); ss.format = PA_SAMPLE_FLOAT32LE; @@ -125,10 +126,10 @@ static void _input_attach_internal(Eo *eo_obj, Eo *in) stream = pa_stream_new(class_vars.context, name, &ss, NULL); if (!stream) { ERR("Could not create stream"); - return; + return EINA_FALSE; } - eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_attach(in)); + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_attach(in, &ret)); eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_SAMPLERATE_CHANGED, _update_samplerate_cb, eo_obj)); @@ -138,6 +139,8 @@ static void _input_attach_internal(Eo *eo_obj, Eo *in) pa_stream_set_write_callback(stream, _write_cb, in); pa_stream_connect_playback(stream, NULL, NULL, PA_STREAM_VARIABLE_RATE, NULL, NULL); + + return ret; } static Eina_Bool _delayed_attach_cb(void *data, Eo *eo_obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) @@ -152,14 +155,19 @@ static Eina_Bool _delayed_attach_cb(void *data, Eo *eo_obj, const Eo_Event_Descr static void _input_attach(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) { + Eina_Bool retval = EINA_TRUE; + Eo *in = va_arg(*list, Eo *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); if (class_vars.state != PA_CONTEXT_READY) { DBG("Delaying input_attach because PA context is not ready."); eo_do(eo_obj, eo_event_callback_add(ECORE_AUDIO_EV_OUT_PULSE_CONTEXT_READY, _delayed_attach_cb, in)); } else { - _input_attach_internal(eo_obj, in); + retval = _input_attach_internal(eo_obj, in); } + if (ret) + *ret = retval; } static void _drain_cb(pa_stream *stream, int success EINA_UNUSED, void *data EINA_UNUSED) diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c index b5fd2d59ff..db0ca4b19f 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c @@ -66,8 +66,9 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Output *out_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_OUT_CLASS); Eo *in = va_arg(*list, Eo *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); - eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_attach(in)); + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_attach(in, ret)); eo_do(in, ecore_audio_obj_in_samplerate_get(&obj->sfinfo.samplerate)); eo_do(in, ecore_audio_obj_in_channels_get(&obj->sfinfo.channels)); diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c index 323d567643..e03908a007 100644 --- a/src/lib/edje/edje_multisense.c +++ b/src/lib/edje/edje_multisense.c @@ -119,7 +119,7 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c if (!out) out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); } } return EINA_TRUE; @@ -162,7 +162,7 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const if (!out) out = eo_add(ECORE_AUDIO_OBJ_OUT_PULSE_CLASS, NULL); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); } } return EINA_TRUE; diff --git a/src/tests/ecore/ecore_test_ecore_audio.c b/src/tests/ecore/ecore_test_ecore_audio.c index fe3641a1f7..f5a384d053 100644 --- a/src/tests/ecore/ecore_test_ecore_audio.c +++ b/src/tests/ecore/ecore_test_ecore_audio.c @@ -350,7 +350,7 @@ START_TEST(ecore_test_ecore_audio_obj_tone) eo_do(out, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_WAV)); eo_do(out, ecore_audio_obj_source_set(SOUNDS_DIR"/tmp.wav")); - eo_do(out, ecore_audio_obj_out_input_attach(in)); + eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _finished_cb, NULL)); @@ -407,7 +407,7 @@ START_TEST(ecore_test_ecore_audio_obj_in_out) fail_if(eina_list_count(in3) != 0); - fail_if(!eo_do(out, ecore_audio_obj_out_input_attach(in))); + fail_if(!eo_do(out, ecore_audio_obj_out_input_attach(in, NULL))); fail_if(!eo_do(in, ecore_audio_obj_in_output_get(&out2))); @@ -418,7 +418,7 @@ START_TEST(ecore_test_ecore_audio_obj_in_out) fail_if(eina_list_count(in3) != 1); fail_if(eina_list_data_get(in3) != in); - fail_if(!eo_do(out, ecore_audio_obj_out_input_attach(in2))); + fail_if(!eo_do(out, ecore_audio_obj_out_input_attach(in2, NULL))); fail_if(!eo_do(out, ecore_audio_obj_out_inputs_get(&in3)));