From 97d4b50c91adcb8b779f5449b27e2265f2f243f0 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Tue, 23 Apr 2013 17:10:16 +0100 Subject: [PATCH] ecore_audio: Add more return values for methods, catch up with API input_attach, input_detach, format_set, and source_set now return an Eina_Bool Tests, examples and edje_multisense adapted Signed-off-by: Daniel Willmann --- src/examples/ecore/ecore_audio_custom.c | 8 +++- src/examples/ecore/ecore_audio_playback.c | 39 +++++++++++++++---- src/examples/ecore/ecore_audio_to_ogg.c | 24 ++++++++++-- src/lib/ecore_audio/ecore_audio_obj.h | 4 +- src/lib/ecore_audio/ecore_audio_obj_in.c | 2 +- .../ecore_audio/ecore_audio_obj_in_sndfile.c | 13 +++++++ src/lib/ecore_audio/ecore_audio_obj_out.c | 15 +++++-- src/lib/ecore_audio/ecore_audio_obj_out.h | 2 +- .../ecore_audio/ecore_audio_obj_out_pulse.c | 14 ++++++- .../ecore_audio/ecore_audio_obj_out_sndfile.c | 30 +++++++++++++- src/lib/edje/edje_multisense.c | 18 +++++++-- src/tests/ecore/ecore_test_ecore_audio.c | 25 +++++++++--- 12 files changed, 162 insertions(+), 32 deletions(-) diff --git a/src/examples/ecore/ecore_audio_custom.c b/src/examples/ecore/ecore_audio_custom.c index 8234b1e153..b5dbb7cbd3 100644 --- a/src/examples/ecore/ecore_audio_custom.c +++ b/src/examples/ecore/ecore_audio_custom.c @@ -49,6 +49,8 @@ Ecore_Audio_Vio vio = { int main(int argc, const char *argv[]) { + Eina_Bool ret; + ecore_init(); ecore_audio_init(); @@ -68,7 +70,11 @@ 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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) { + printf("Could not attach input"); + goto end; + } ecore_main_loop_begin(); diff --git a/src/examples/ecore/ecore_audio_playback.c b/src/examples/ecore/ecore_audio_playback.c index 788326b2b2..6c93fd565a 100644 --- a/src/examples/ecore/ecore_audio_playback.c +++ b/src/examples/ecore/ecore_audio_playback.c @@ -23,7 +23,7 @@ handle_cmd(char *cmd, size_t bread) const char *name; Eina_List *out_inputs, *input; Eo *in; - Eina_Bool paused; + Eina_Bool paused, ret; double pos, length; int min; @@ -53,7 +53,10 @@ handle_cmd(char *cmd, size_t bread) else if (!strncmp(cmd, "n", bread)) { in = eina_list_data_get(out_inputs); - eo_do(out, ecore_audio_obj_out_input_detach(in)); + eo_do(out, ecore_audio_obj_out_input_detach(in, &ret)); + if (!ret) + printf("Could not detach input\n"); + inputs = eina_list_remove(inputs, in); if (eina_list_count(inputs) > 0) @@ -64,7 +67,9 @@ 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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) + printf("Could not attach input %s\n", name); } else { @@ -83,7 +88,9 @@ 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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) + printf("Could not attach input %s\n", name); } } else if (!strncmp(cmd, "l", bread)) @@ -187,14 +194,18 @@ handle_input(void *data EINA_UNUSED, Ecore_Fd_Handler *handler) static Eina_Bool _play_finished(void *data EINA_UNUSED, Eo *in, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) { const char *name; + Eina_Bool ret; eo_do(in, ecore_audio_obj_name_get(&name)); printf("Done: %s\n", name); inputs = eina_list_remove(inputs, in); - eo_do(out, ecore_audio_obj_out_input_detach(in)); + eo_do(out, ecore_audio_obj_out_input_detach(in, &ret)); eo_del(in); + if (!ret) + printf("Could not detach input %s\n", name); + if (eina_list_count(inputs) > 0) { @@ -203,7 +214,9 @@ 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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) + printf("Could not attach input %s\n", name); } else { @@ -219,6 +232,7 @@ main(int argc, const char *argv[]) { int i, freq; + Eina_Bool ret; struct termios tcorig, tcnew; Eo *in; char *tmp, *tmp2, *val; @@ -271,7 +285,11 @@ main(int argc, const char *argv[]) tmp = strdup(argv[i]); eo_do(in, ecore_audio_obj_name_set(basename(tmp))); free(tmp); - eo_do(in, ecore_audio_obj_source_set(argv[i])); + eo_do(in, ecore_audio_obj_source_set(argv[i], &ret)); + if (!ret) { + printf("Could not set %s as input\n", argv[i]); + continue; + } } eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL)); inputs = eina_list_append(inputs, in); @@ -281,13 +299,18 @@ main(int argc, const char *argv[]) double length; in = (Eo *)eina_list_data_get(inputs); + if (!in) + return 1; + eo_do(in, ecore_audio_obj_name_get(&name), ecore_audio_obj_in_length_get(&length)); 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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) + printf("Could not attach input %s\n", name); /* 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 973941d479..37c345ad05 100644 --- a/src/examples/ecore/ecore_audio_to_ogg.c +++ b/src/examples/ecore/ecore_audio_to_ogg.c @@ -37,6 +37,7 @@ main(int argc, char *argv[]) { Eo *out; Eo *in; + Eina_Bool ret; if (argc < 2) { @@ -50,14 +51,31 @@ main(int argc, char *argv[]) in = eo_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL); eo_do(in, ecore_audio_obj_name_set(basename(argv[1]))); - eo_do(in, ecore_audio_obj_source_set(argv[1])); + eo_do(in, ecore_audio_obj_source_set(argv[1], &ret)); + if (!ret) { + printf("Could not set %s as input\n", argv[1]); + eo_del(in); + return 1; + } eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _play_finished, NULL)); 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_source_set("foo.ogg", &ret)); + if (!ret) { + printf("Could not set %s as output\n", "foo.ogg"); + eo_del(in); + eo_del(out); + return 1; + } - eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) { + printf("Could not attach input\n"); + eo_del(out); + eo_del(in); + return 1; + } ecore_main_loop_begin(); diff --git a/src/lib/ecore_audio/ecore_audio_obj.h b/src/lib/ecore_audio/ecore_audio_obj.h index 87c08b8f25..625aad5ed6 100644 --- a/src/lib/ecore_audio/ecore_audio_obj.h +++ b/src/lib/ecore_audio/ecore_audio_obj.h @@ -85,11 +85,11 @@ enum Ecore_Audio_Obj_Sub_Ids #define ecore_audio_obj_volume_get(ret) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_VOLUME_GET), EO_TYPECHECK(double *, ret) -#define ecore_audio_obj_source_set(source) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_SOURCE_SET), EO_TYPECHECK(const char *, source) +#define ecore_audio_obj_source_set(source, ret) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_SOURCE_SET), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Eina_Bool *, ret) #define ecore_audio_obj_source_get(source) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_SOURCE_GET), EO_TYPECHECK(const char **, source) -#define ecore_audio_obj_format_set(format) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_FORMAT_SET), EO_TYPECHECK(Ecore_Audio_Format, format) +#define ecore_audio_obj_format_set(format, ret) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_FORMAT_SET), EO_TYPECHECK(Ecore_Audio_Format, format), EO_TYPECHECK(Eina_Bool *, ret) #define ecore_audio_obj_format_get(ret) ECORE_AUDIO_OBJ_ID(ECORE_AUDIO_OBJ_SUB_ID_FORMAT_GET), EO_TYPECHECK(Ecore_Audio_Format *, ret) diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.c b/src/lib/ecore_audio/ecore_audio_obj_in.c index 1264939f8a..9f80806c37 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_in.c +++ b/src/lib/ecore_audio/ecore_audio_obj_in.c @@ -243,7 +243,7 @@ static void _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) Ecore_Audio_Input *obj = _pd; if(obj->output) - eo_do(obj->output, ecore_audio_obj_out_input_detach(eo_obj)); + eo_do(obj->output, ecore_audio_obj_out_input_detach(eo_obj, NULL)); eo_do_super(eo_obj, MY_CLASS, eo_destructor()); } diff --git a/src/lib/ecore_audio/ecore_audio_obj_in_sndfile.c b/src/lib/ecore_audio/ecore_audio_obj_in_sndfile.c index 6dcc9fb591..eee40c41d2 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_in_sndfile.c +++ b/src/lib/ecore_audio/ecore_audio_obj_in_sndfile.c @@ -137,6 +137,10 @@ static void _source_set(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Input *in_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_IN_CLASS); const char *source = va_arg(*list, const char *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + + if (ret) + *ret = EINA_FALSE; if (obj->handle) { sf_close(obj->handle); @@ -156,6 +160,9 @@ static void _source_set(Eo *eo_obj, void *_pd, va_list *list) return; } + if (ret) + *ret = EINA_TRUE; + in_obj->seekable = EINA_TRUE; in_obj->length = (double)obj->sfinfo.frames / obj->sfinfo.samplerate; @@ -188,6 +195,7 @@ static void _format_set(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); Ecore_Audio_Format format= va_arg(*list, Ecore_Audio_Format); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); if (ea_obj->source) { ERR("Input is already open - cannot change format"); @@ -208,9 +216,14 @@ static void _format_set(Eo *eo_obj, void *_pd, va_list *list) break; default: ERR("Format not supported!"); + if (ret) + *ret = EINA_FALSE; return; } ea_obj->format = format; + + if (ret) + *ret = EINA_TRUE; } static void _format_get(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.c b/src/lib/ecore_audio/ecore_audio_obj_out.c index 253cf62ad6..c463240845 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out.c @@ -35,7 +35,7 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) if (in->output == eo_obj) return; - if (in->output) eo_do(in->output, ecore_audio_obj_out_input_detach(input)); + if (in->output) eo_do(in->output, ecore_audio_obj_out_input_detach(input, NULL)); in->output = eo_obj; /* TODO: Check type is input @@ -48,15 +48,22 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) *ret = EINA_TRUE; } -static void _input_detach(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list) +static void _input_detach(Eo *eo_obj, void *_pd, va_list *list) { Ecore_Audio_Output *obj = _pd; 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); + if (ret) + *ret = EINA_FALSE; + + if (in->output != eo_obj) + return; + in->output = NULL; /* TODO: Check type is input @@ -65,6 +72,8 @@ static void _input_detach(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list) obj->inputs = eina_list_remove(obj->inputs, input); + if (ret) + *ret = EINA_TRUE; } static void _inputs_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list) @@ -91,7 +100,7 @@ static void _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) Eo *in; EINA_LIST_FOREACH_SAFE(obj->inputs, cur, tmp, in) { - eo_do(eo_obj, ecore_audio_obj_out_input_detach(in)); + eo_do(eo_obj, ecore_audio_obj_out_input_detach(in, NULL)); } eo_do_super(eo_obj, MY_CLASS, eo_destructor()); diff --git a/src/lib/ecore_audio/ecore_audio_obj_out.h b/src/lib/ecore_audio/ecore_audio_obj_out.h index ec5e9bf773..e42581ffd5 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out.h +++ b/src/lib/ecore_audio/ecore_audio_obj_out.h @@ -51,7 +51,7 @@ enum Ecore_Audio_Obj_Out_Sub_Ids #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) +#define ecore_audio_obj_out_input_detach(input, ret) ECORE_AUDIO_OBJ_OUT_ID(ECORE_AUDIO_OBJ_OUT_SUB_ID_INPUT_DETACH), EO_TYPECHECK(Eo *, input), EO_TYPECHECK(Eina_Bool *, ret) #define ecore_audio_obj_out_inputs_get(input) ECORE_AUDIO_OBJ_OUT_ID(ECORE_AUDIO_OBJ_OUT_SUB_ID_INPUTS_GET), EO_TYPECHECK(Eina_List **, 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 0232a10e41..4c43d399cf 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c @@ -131,7 +131,7 @@ static Eina_Bool _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"); - eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in)); + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in, NULL)); return EINA_FALSE; } @@ -185,15 +185,25 @@ static void _drain_cb(pa_stream *stream, int success EINA_UNUSED, void *data EIN static void _input_detach(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) { pa_stream *stream; + Eina_Bool ret2; Eo *in = va_arg(*list, Eo *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + + if (ret) + *ret = EINA_FALSE; + + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in, &ret2)); + if (!ret2) + return; eo_do(in, eo_base_data_get("pulse_data", (void **)&stream)); pa_stream_set_write_callback(stream, NULL, NULL); pa_operation_unref(pa_stream_drain(stream, _drain_cb, NULL)); - eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in)); + if (ret) + *ret = EINA_TRUE; } static void _state_cb(pa_context *context, 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 99e89d1838..68c2a3d84f 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c +++ b/src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c @@ -64,11 +64,17 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Sndfile *obj = _pd; Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); Ecore_Audio_Output *out_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_OUT_CLASS); + Eina_Bool ret2; 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, ret)); + if (ret) + *ret = EINA_FALSE; + + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_attach(in, &ret2)); + if (!ret2) + return; eo_do(in, ecore_audio_obj_in_samplerate_get(&obj->sfinfo.samplerate)); eo_do(in, ecore_audio_obj_in_channels_get(&obj->sfinfo.channels)); @@ -78,9 +84,13 @@ static void _input_attach(Eo *eo_obj, void *_pd, va_list *list) if (!obj->handle) { eina_stringshare_del(ea_obj->source); ea_obj->source = NULL; + eo_do_super(eo_obj, MY_CLASS, ecore_audio_obj_out_input_detach(in, NULL)); return; } + if (ret) + *ret = EINA_TRUE; + if (ea_obj->paused) return; @@ -96,6 +106,10 @@ static void _source_set(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); const char *source = va_arg(*list, const char *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + + if (ret) + *ret = EINA_FALSE; if (obj->handle) { sf_close(obj->handle); @@ -107,6 +121,11 @@ static void _source_set(Eo *eo_obj, void *_pd, va_list *list) if (!ea_obj->source) return; + //FIXME: Open the file here + + if (ret) + *ret = EINA_TRUE; + } static void _source_get(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) @@ -125,9 +144,12 @@ static void _format_set(Eo *eo_obj, void *_pd, va_list *list) Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); Ecore_Audio_Format format= va_arg(*list, Ecore_Audio_Format); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); if (ea_obj->source) { ERR("Input is already open - cannot change format"); + if (ret) + *ret = EINA_FALSE; return; } @@ -145,9 +167,13 @@ static void _format_set(Eo *eo_obj, void *_pd, va_list *list) break; default: ERR("Format not supported!"); + if (ret) + *ret = EINA_FALSE; return; } ea_obj->format = format; + if (ret) + *ret = EINA_TRUE; } static void _format_get(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) @@ -164,7 +190,7 @@ static void _constructor(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_U { eo_do_super(eo_obj, MY_CLASS, eo_constructor()); - eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG)); + eo_do(eo_obj, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_OGG, NULL)); } static void _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c index e03908a007..898c7450ed 100644 --- a/src/lib/edje/edje_multisense.c +++ b/src/lib/edje/edje_multisense.c @@ -78,6 +78,7 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c Edje_Sound_Sample *sample; char snd_id_str[255]; int i; + Eina_Bool ret; if (!sample_name) { @@ -119,7 +120,12 @@ _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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) { + ERR("Could not attach input"); + eo_del(in); + return EINA_FALSE; + } } } return EINA_TRUE; @@ -138,11 +144,12 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const #ifdef ENABLE_MULTISENSE unsigned int i; Edje_Sound_Tone *tone; + Eina_Bool ret; Eo *in; if (!tone_name) { - ERR("Given Tone Name is NULL\n"); + ERR("Given Tone Name is NULL"); return EINA_FALSE; } if ((!ed) || (!ed->file) || (!ed->file->sound_dir)) @@ -162,7 +169,12 @@ _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, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + if (!ret) { + ERR("Could not attach input"); + eo_del(in); + return EINA_FALSE; + } } } return EINA_TRUE; diff --git a/src/tests/ecore/ecore_test_ecore_audio.c b/src/tests/ecore/ecore_test_ecore_audio.c index c70b9bed9d..8c6623c750 100644 --- a/src/tests/ecore/ecore_test_ecore_audio.c +++ b/src/tests/ecore/ecore_test_ecore_audio.c @@ -315,6 +315,7 @@ START_TEST(ecore_test_ecore_audio_obj_tone) Eo *in, *out; double len; int channel, rate, freq; + Eina_Bool ret; in = eo_add(ECORE_AUDIO_OBJ_IN_TONE_CLASS, NULL); fail_if(!in); @@ -366,10 +367,13 @@ START_TEST(ecore_test_ecore_audio_obj_tone) fail_if(!out); eo_do(out, ecore_audio_obj_name_set("tmp.wav")); - eo_do(out, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_WAV)); - eo_do(out, ecore_audio_obj_source_set(TESTS_BUILD_DIR"/tmp.wav")); + eo_do(out, ecore_audio_obj_format_set(ECORE_AUDIO_FORMAT_WAV, &ret)); + fail_if(!ret); + eo_do(out, ecore_audio_obj_source_set(TESTS_BUILD_DIR"/tmp.wav", &ret)); + fail_if(!ret); - eo_do(out, ecore_audio_obj_out_input_attach(in, NULL)); + eo_do(out, ecore_audio_obj_out_input_attach(in, &ret)); + fail_if(!ret); eo_do(in, eo_event_callback_add(ECORE_AUDIO_EV_IN_STOPPED, _finished_cb, NULL)); @@ -388,12 +392,14 @@ START_TEST(ecore_test_ecore_audio_obj_sndfile) Eo *in; double len, rem; int channel, rate; + Eina_Bool ret; in = eo_add(ECORE_AUDIO_OBJ_IN_SNDFILE_CLASS, NULL); fail_if(!in); eo_do(in, ecore_audio_obj_name_set("sms.ogg")); - eo_do(in, ecore_audio_obj_source_set(TESTS_SRC_DIR"/sms.ogg")); + eo_do(in, ecore_audio_obj_source_set(TESTS_SRC_DIR"/sms.ogg", &ret)); + fail_if(!ret); eo_do(in, ecore_audio_obj_in_channels_get(&channel)); fail_if(channel != 2); @@ -445,7 +451,8 @@ 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, NULL))); + fail_if(!eo_do(out, ecore_audio_obj_out_input_attach(in2, &attached))); + fail_if(!attached); fail_if(!eo_do(out, ecore_audio_obj_out_inputs_get(&in3))); @@ -639,9 +646,15 @@ ecore_test_ecore_audio(TCase *tc) tcase_add_test(tc, ecore_test_ecore_audio_obj); tcase_add_test(tc, ecore_test_ecore_audio_obj_in); tcase_add_test(tc, ecore_test_ecore_audio_obj_in_out); - tcase_add_test(tc, ecore_test_ecore_audio_obj_sndfile); tcase_add_test(tc, ecore_test_ecore_audio_obj_tone); +#ifdef HAVE_SNDFILE + tcase_add_test(tc, ecore_test_ecore_audio_obj_sndfile); +#endif +#ifdef HAVE_PUSE + tcase_add_test(tc, ecore_test_ecore_audio_obj_pulse); +#endif + /* tcase_add_test(tc, ecore_test_ecore_audio_default); tcase_add_test(tc, ecore_test_ecore_audio_sndfile_vio);