ecore_audio: Add return value to input_attach method
authorDaniel Willmann <d.willmann@samsung.com>
Thu, 18 Apr 2013 18:21:05 +0000 (19:21 +0100)
committerDaniel Willmann <d.willmann@samsung.com>
Thu, 18 Apr 2013 18:32:46 +0000 (19:32 +0100)
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
src/examples/ecore/ecore_audio_custom.c
src/examples/ecore/ecore_audio_playback.c
src/examples/ecore/ecore_audio_to_ogg.c
src/lib/ecore_audio/ecore_audio_obj_out.c
src/lib/ecore_audio/ecore_audio_obj_out.h
src/lib/ecore_audio/ecore_audio_obj_out_pulse.c
src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c
src/lib/edje/edje_multisense.c
src/tests/ecore/ecore_test_ecore_audio.c

index 2f16ec9..2b6d133 100644 (file)
@@ -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();
 
index bdfd7db..c3314ee 100644 (file)
@@ -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 */
index 88035cb..e5d05ce 100644 (file)
@@ -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();
 
index f4d39fd..141d26b 100644 (file)
@@ -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)
index 7fc0cf7..ec5e9bf 100644 (file)
@@ -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)
 
index c103b73..3e3a1ba 100644 (file)
@@ -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)
index b5fd2d5..db0ca4b 100644 (file)
@@ -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));
index 323d567..e03908a 100644 (file)
@@ -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;
index fe3641a..f5a384d 100644 (file)
@@ -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)));