From 01e4c9597e344ce4e34f7889883452ae0dd0a928 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Wed, 17 Apr 2013 18:52:14 +0100 Subject: [PATCH] ecore_audio: Change signature of read function, reorder methods Signed-off-by: Daniel Willmann --- src/lib/ecore_audio/ecore_audio_obj_in.c | 65 ++++++++++++++++---------------- src/lib/ecore_audio/ecore_audio_obj_in.h | 2 +- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.c b/src/lib/ecore_audio/ecore_audio_obj_in.c index 92dc48d..983b310 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_in.c +++ b/src/lib/ecore_audio/ecore_audio_obj_in.c @@ -114,16 +114,41 @@ static void _looped_get(Eo *eo_obj, void *_pd, va_list *list) *ret = obj->looped; } +static void _length_get(Eo *eo_obj, void *_pd, va_list *list) +{ + const Ecore_Audio_Input *obj = _pd; + + double *ret = va_arg(*list, double *); + + if (ret) { + *ret = obj->length; + } +} + +static void _remaining_get(Eo *eo_obj, void *_pd, va_list *list) +{ + const Ecore_Audio_Input *obj = _pd; + Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); + + double *ret = va_arg(*list, double *); + + if (ret) { + eo_do(eo_obj, ecore_audio_obj_in_seek(0, SEEK_CUR, ret)); + *ret = obj->length - *ret; + } +} + static void _read(Eo *eo_obj, void *_pd, va_list *list) { const Ecore_Audio_Input *obj = _pd; - int len_read = 0; + ssize_t len_read = 0; + const Ecore_Audio_Object *ea_obj = eo_data_get(eo_obj, ECORE_AUDIO_OBJ_CLASS); char *buf = va_arg(*list, char *); - int len = va_arg(*list, int); - int *ret = va_arg(*list, int *); + size_t len = va_arg(*list, size_t); + ssize_t *ret = va_arg(*list, ssize_t *); - if (obj->paused) { + if (ea_obj->paused) { memset(buf, 0, len); len_read = len; } else { @@ -144,29 +169,6 @@ static void _read(Eo *eo_obj, void *_pd, va_list *list) *ret = len_read; } -static void _length_get(Eo *eo_obj, void *_pd, va_list *list) -{ - const Ecore_Audio_Input *obj = _pd; - - double *ret = va_arg(*list, double *); - - if (ret) { - *ret = obj->length; - } -} - -static void _remaining_get(Eo *eo_obj, void *_pd, va_list *list) -{ - const Ecore_Audio_Input *obj = _pd; - - double *ret = va_arg(*list, double *); - - if (ret) { - eo_do(eo_obj, ecore_audio_obj_in_seek(0, SEEK_CUR, ret)); - *ret = obj->length - *ret; - } -} - static void _output_get(Eo *eo_obj, void *_pd, va_list *list) { const Ecore_Audio_Input *obj = _pd; @@ -210,13 +212,12 @@ static void _class_constructor(Eo_Class *klass) EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SAMPLERATE_GET), _samplerate_get), EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_SET), _channels_set), EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_CHANNELS_GET), _channels_get), - EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_SET), NULL), - EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_PRELOADED_GET), NULL), - EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_READ), _read), - EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SEEK), NULL), - EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_OUTPUT_GET), _output_get), + EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_SET), _looped_set), + EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LOOPED_GET), _looped_get), EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_GET), _length_get), EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_REMAINING_GET), _remaining_get), + EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_READ), _read), + EO_OP_FUNC(ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_OUTPUT_GET), _output_get), EO_OP_FUNC_SENTINEL }; diff --git a/src/lib/ecore_audio/ecore_audio_obj_in.h b/src/lib/ecore_audio/ecore_audio_obj_in.h index f2aa6e3..9d88df5 100644 --- a/src/lib/ecore_audio/ecore_audio_obj_in.h +++ b/src/lib/ecore_audio/ecore_audio_obj_in.h @@ -104,7 +104,7 @@ enum Ecore_Audio_Obj_In_Sub_Ids #define ecore_audio_obj_in_length_get(ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_LENGTH_GET), EO_TYPECHECK(double *, ret) -#define ecore_audio_obj_in_read(buf, len, ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_READ), EO_TYPECHECK(char *, buf), EO_TYPECHECK(int, len), EO_TYPECHECK(int *, ret) +#define ecore_audio_obj_in_read(buf, len, ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_READ), EO_TYPECHECK(char *, buf), EO_TYPECHECK(size_t, len), EO_TYPECHECK(ssize_t *, ret) #define ecore_audio_obj_in_seek(offs, mode, ret) ECORE_AUDIO_OBJ_IN_ID(ECORE_AUDIO_OBJ_IN_SUB_ID_SEEK), EO_TYPECHECK(double, offs), EO_TYPECHECK(int, mode), EO_TYPECHECK(double *, ret) -- 2.7.4