From ecfb3c4df09899586147e72e3dc6ea2fe327faf6 Mon Sep 17 00:00:00 2001 From: Sung-Jin Park Date: Wed, 21 Aug 2019 16:12:01 +0900 Subject: [PATCH] PUI: fill out missing variables when an ani is created, fix timer stuff Change-Id: I4a4fae5bcfd55c9ff6abe6812067b8aee14bbb9a Signed-off-by: Sung-Jin Park --- include/PUI_backend.h | 13 ++++++------ src/PUI_ani.c | 56 ++++++++++++++++++++++++++++++++++----------------- src/PUI_backend.c | 6 ++---- src/PUI_common.h | 6 +++--- src/PUI_internal.h | 2 +- 5 files changed, 50 insertions(+), 33 deletions(-) diff --git a/include/PUI_backend.h b/include/PUI_backend.h index a39f197..2881796 100644 --- a/include/PUI_backend.h +++ b/include/PUI_backend.h @@ -26,11 +26,6 @@ struct _pui_backend_ani_func void (*reserved3)(void); void (*reserved4)(void); void (*reserved5)(void); - void (*reserved6)(void); - void (*reserved7)(void); - void (*reserved8)(void); - void (*reserved9)(void); - void (*reserved10)(void); }; typedef void pui_backend_ani_info; @@ -48,6 +43,12 @@ struct _pui_backend_module_data pui_int_error (*create_ani_collection)(void); pui_backend_ani_data *(*ani_create)(pui_id id); void (*ani_destroy)(pui_backend_ani_data *ani_data); + + void (*reserved1)(void); + void (*reserved2)(void); + void (*reserved3)(void); + void (*reserved4)(void); + void (*reserved5)(void); }; struct _pui_backend_module @@ -73,7 +74,7 @@ pui_backend_ani_set_buffer(pui_ani_t *ani, pui_ani_control_buffer *buffer); pui_int_error pui_backend_ani_update(pui_ani_t *ani); -void +pui_bool pui_backend_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval); void diff --git a/src/PUI_ani.c b/src/PUI_ani.c index 66c039f..ea132a8 100644 --- a/src/PUI_ani.c +++ b/src/PUI_ani.c @@ -149,7 +149,7 @@ pui_ani_get_buffer(pui_ani_h ani_h) if (!ani_h) { - pui_err( "Invalid pui ani handle !\n"); + pui_err("Invalid pui ani handle !\n"); return NULL; } @@ -345,14 +345,18 @@ _pui_ani_event_handlers_shutdown(pui_ani_h ani_h) return; } - while (eina_array_count(ani_h->ecore_event_hdls)) - ecore_event_handler_del(eina_array_pop(ani_h->ecore_event_hdls)); - eina_array_free(ani_h->ecore_event_hdls); + if (ani_h->ecore_event_hdls) + { + while (eina_array_count(ani_h->ecore_event_hdls)) + ecore_event_handler_del(eina_array_pop(ani_h->ecore_event_hdls)); - ani_h->ecore_event_hdls = NULL; + eina_array_free(ani_h->ecore_event_hdls); + ani_h->ecore_event_hdls = NULL; + } } -Eina_Bool _pui_ani_frame_cb(void *data) +static Eina_Bool +_pui_ani_frame_cb(void *data) { Eina_Bool ret; @@ -370,19 +374,22 @@ Eina_Bool _pui_ani_frame_cb(void *data) return ECORE_CALLBACK_CANCEL; } + if (!ani->frame_cb_timer) + { + pui_err("Invalid frame_cb timer !\n"); + return ECORE_CALLBACK_CANCEL; + } + pui_info("frame_cb !\n"); ret = (Eina_Bool)ani->backend_frame_cb(ani, ++ani->serial); - if (!ani->frame_cb_timer) - return ECORE_CALLBACK_CANCEL; - pui_ani_status_update(ani, PUI_ANI_STATUS_RUNNING); return ret; } -void +pui_bool pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval) { Ecore_Timer *timer = NULL; @@ -390,7 +397,7 @@ pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial if (!ani) { pui_err("Invalid put ani !\n"); - return; + return 0; } ani->frame_cb = _pui_ani_frame_cb; @@ -399,18 +406,20 @@ pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial ani->frame_cb_data = ani; ani->serial = 0; - timer = ecore_timer_add(frame_interval, (Ecore_Task_Cb)ani->frame_cb, ani->frame_cb_data); + timer = ecore_timer_add(frame_interval, _pui_ani_frame_cb, ani); - if (ani->frame_cb_timer) + if (!timer) { - ecore_timer_del(ani->frame_cb_timer); - ani->frame_cb_timer = NULL; + pui_err("Failed to add ecore timer !\n"); + return 0; } ani->frame_cb_timer = timer; /* call frame_cb for starting the first frame */ _pui_ani_frame_cb(ani); + + return 1; } void @@ -525,6 +534,9 @@ pui_ani_control(pui_ani_h ani_h, pui_ani_cmd cmd, int repeat) ani_func = ani->ani_data->ani_func; + ani->cmd = cmd; + ani->repeat = repeat; + if (cmd == PUI_ANI_CMD_START) { ani_func->ani_start(ani, repeat); @@ -532,11 +544,9 @@ pui_ani_control(pui_ani_h ani_h, pui_ani_cmd cmd, int repeat) else//cmd == PUI_ANI_CMD_STOP { ani_func->ani_stop(ani); + return PUI_ERROR_NONE; } - ani->cmd = cmd; - ani->repeat = repeat; - ani_h->frame_done_cb = ecore_wl2_window_frame_callback_add(handle->win, _pui_ani_cb_frame_done, handle); if (!ani_h->frame_done_cb) @@ -582,7 +592,10 @@ pui_ani_create(pui_h handle, pui_id id) goto err; } + ani_h->id = strdup(id); + ani_h->pui_handle = handle; ani_h->ecore_event_hdls = NULL; + _pui_ani_event_handlers_init(ani_h); ani = (pui_ani_t *)calloc(1, sizeof(pui_ani_t)); @@ -595,9 +608,13 @@ pui_ani_create(pui_h handle, pui_id id) ani->ani_h = ani_h; ani->id = id; + ani->cmd = PUI_ANI_CMD_NONE; + ani->repeat = 0; ani->status = PUI_ANI_STATUS_INITIAL; ani->ani_data = ani_data; + ani_h->ani = ani; + handle->ani_handles = eina_list_append(handle->ani_handles, ani_h); return ani_h; @@ -644,7 +661,7 @@ pui_ani_destroy(pui_ani_h ani_h) free(ani_h->ani); _pui_ani_event_handlers_shutdown(ani_h); - + if (ani_h->frame_done_cb) { ecore_wl2_window_frame_callback_del(ani_h->frame_done_cb); @@ -653,6 +670,7 @@ pui_ani_destroy(pui_ani_h ani_h) handle->ani_handles = eina_list_remove(handle->ani_handles, ani_h); + free(ani_h->id); free(ani_h); } diff --git a/src/PUI_backend.c b/src/PUI_backend.c index f3327e2..b408cca 100644 --- a/src/PUI_backend.c +++ b/src/PUI_backend.c @@ -43,10 +43,10 @@ pui_backend_ani_status_get(pui_ani_t *ani) return pui_ani_status_get(ani); } -void +pui_bool pui_backend_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval) { - pui_ani_add_frame_cb(ani, frame_cb, frame_interval); + return pui_ani_add_frame_cb(ani, frame_cb, frame_interval); } void @@ -74,7 +74,6 @@ pui_backend_ani_alloc_ani_func(void) return NULL; } - pui_info("Succeed to allocate memory !\n"); return ani_func; } @@ -88,7 +87,6 @@ pui_backend_ani_free_ani_func(pui_backend_ani_func *ani_func) } free(ani_func); - pui_info("Succeed to free memory !\n"); } pui_backend_ani_data * diff --git a/src/PUI_common.h b/src/PUI_common.h index 1b6f156..66037da 100644 --- a/src/PUI_common.h +++ b/src/PUI_common.h @@ -56,17 +56,17 @@ typedef struct _pui_backend_module pui_backend_module; #define pui_err(msg, ...) \ do { \ - fprintf(stderr, "[ERROR][%s] " msg, __FUNCTION__, ##__VA_ARGS__); \ + fprintf(stderr, "[ERROR][%s][%d] " msg, __FUNCTION__, __LINE__, ##__VA_ARGS__); \ } while(0) #define pui_warn(msg, ...) \ do { \ - fprintf(stderr, "[WARNING][%s] " msg, __FUNCTION__, ##__VA_ARGS__); \ + fprintf(stderr, "[WARNING][%s][%d] " msg, __FUNCTION__, __LINE__, ##__VA_ARGS__); \ } while(0) #define pui_info(msg, ...) \ do { \ - fprintf(stdout, "[INFO][%s] " msg, __FUNCTION__, ##__VA_ARGS__); \ + fprintf(stdout, "[INFO][%s][%d] " msg, __FUNCTION__, __LINE__, ##__VA_ARGS__); \ } while(0) #endif//_LIBPUI_COMMON_H_ diff --git a/src/PUI_internal.h b/src/PUI_internal.h index 7d78fc9..d1fe723 100644 --- a/src/PUI_internal.h +++ b/src/PUI_internal.h @@ -90,7 +90,7 @@ pui_ani_set_buffer(pui_ani_h ani_h, pui_ani_control_buffer *buffer); pui_int_error pui_ani_update(pui_ani_h ani_h); -void +pui_bool pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval); void -- 2.7.4