PUI: fill out missing variables when an ani is created, fix timer stuff 60/220660/1
authorSung-Jin Park <sj76.park@samsung.com>
Wed, 21 Aug 2019 07:12:01 +0000 (16:12 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Fri, 20 Dec 2019 07:14:49 +0000 (16:14 +0900)
Change-Id: I4a4fae5bcfd55c9ff6abe6812067b8aee14bbb9a
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
include/PUI_backend.h
src/PUI_ani.c
src/PUI_backend.c
src/PUI_common.h
src/PUI_internal.h

index a39f197..2881796 100644 (file)
@@ -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
index 66c039f..ea132a8 100644 (file)
@@ -149,7 +149,7 @@ pui_ani_get_buffer(pui_ani_h ani_h)
 
        if (!ani_h)
        {
-               pui_err(\r"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);
 }
 
index f3327e2..b408cca 100644 (file)
@@ -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 *
index 1b6f156..66037da 100644 (file)
@@ -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_
index 7d78fc9..d1fe723 100644 (file)
@@ -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