asdfuser pushed a commit to branch master.
commit 97d4b50c91adcb8b779f5449b27e2265f2f243f0
Author: Daniel Willmann <[email protected]>
Date: Tue Apr 23 17:10:16 2013 +0100
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 <[email protected]>
---
src/examples/ecore/ecore_audio_custom.c | 8 ++++-
src/examples/ecore/ecore_audio_playback.c | 39 ++++++++++++++++++-----
src/examples/ecore/ecore_audio_to_ogg.c | 26 ++++++++++++---
src/lib/ecore_audio/ecore_audio_obj.h | 4 +--
src/lib/ecore_audio/ecore_audio_obj_in.c | 2 +-
src/lib/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 +-
src/lib/ecore_audio/ecore_audio_obj_out_pulse.c | 14 ++++++--
src/lib/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, 163 insertions(+), 33 deletions(-)
diff --git a/src/examples/ecore/ecore_audio_custom.c
b/src/examples/ecore/ecore_audio_custom.c
index 8234b1e..b5dbb7c 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 788326b..6c93fd5 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 973941d..37c345a 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_out_input_attach(in, NULL));
+ 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, &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 87c08b8..625aad5 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 1264939..9f80806 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 6dcc9fb..eee40c4 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 253cf62..c463240 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 ec5e9bf..e42581f 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 0232a10..4c43d39 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 99e89d1..68c2a3d 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 e03908a..898c745 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 c70b9be..8c6623c 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);
--
------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr