asdfuser pushed a commit to branch master.
commit e99ab4623a936e06758ae837fadd183d89d8c5d1
Author: Daniel Willmann <[email protected]>
Date: Thu Apr 18 19:21:05 2013 +0100
ecore_audio: Add return value to input_attach method
Signed-off-by: Daniel Willmann <[email protected]>
---
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 ++++++++++++----
src/lib/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 2f16ec9..2b6d133 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 bdfd7db..c3314ee 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 88035cb..e5d05ce 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 f4d39fd..141d26b 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 7fc0cf7..ec5e9bf 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 c103b73..3e3a1ba 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 b5fd2d5..db0ca4b 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 323d567..e03908a 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 fe3641a..f5a384d 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)));
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter