pui*: define PUI_MAGICs and add check logic of them
[platform/core/uifw/libpui.git] / src / PUI_ani.c
index 325274e..40b0a3e 100644 (file)
@@ -78,9 +78,9 @@ pui_ani_get_buffer(pui_ani_h ani_h)
        pui_h handle = NULL;
        pui_ani_control_buffer *buffer = NULL;
 
-       if (!ani_h)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
        {
-               pui_err("Invalid pui ani handle !\n");
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return NULL;
        }
 
@@ -96,7 +96,20 @@ pui_ani_set_buffer(pui_ani_h ani_h, pui_ani_control_buffer *buffer)
        pui_error e = PUI_ERROR_NONE;
        pui_h handle = NULL;
 
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
+               return PUI_ERROR_INVALID_HANDLE;
+       }
+
        handle = ani_h->pui_handle;
+
+       if (!PUI_MAGIC_CHECK(handle, PUI_MAGIC_PUI_H))
+       {
+               PUI_MAGIC_FAIL(handle, PUI_MAGIC_PUI_H, __FUNCTION__);
+               return PUI_ERROR_INVALID_HANDLE;
+       }
+
        e = pui_display_set_buffer(handle, buffer);
 
        return _pui_ani_error_to_int_error(e);
@@ -128,9 +141,9 @@ _pui_ani_frame_cb(void *data)
 
        pui_ani_t *ani = (pui_ani_t *)data;
 
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
        {
-               pui_err("Invalid pui ani !\n");
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return ECORE_CALLBACK_CANCEL;
        }
 
@@ -183,9 +196,9 @@ pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial
 {
        Ecore_Timer *timer = NULL;
 
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
        {
-               pui_err("Invalid put ani !\n");
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return 0;
        }
 
@@ -222,9 +235,9 @@ pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial
 void
 pui_ani_remove_frame_cb(pui_ani_t *ani)
 {
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
        {
-               pui_err("Invalid put ani !\n");
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return;
        }
 
@@ -245,8 +258,17 @@ pui_ani_remove_frame_cb(pui_ani_t *ani)
 pui_id
 pui_ani_get_id(pui_ani_h ani_h)
 {
-       if (!ani_h || !ani_h->ani)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return NULL;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani_h->ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani_h->ani, PUI_MAGIC_ANI_T, __FUNCTION__);
+               return NULL;
+       }
 
        return ani_h->ani->id;
 }
@@ -254,8 +276,17 @@ pui_ani_get_id(pui_ani_h ani_h)
 pui_ani_cmd
 pui_ani_get_cmd(pui_ani_h ani_h)
 {
-       if (!ani_h || !ani_h->ani)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
+               return PUI_ANI_CMD_NONE;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani_h->ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani_h->ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return PUI_ANI_CMD_NONE;
+       }
 
        return ani_h->ani->cmd;
 }
@@ -263,8 +294,17 @@ pui_ani_get_cmd(pui_ani_h ani_h)
 int
 pui_ani_get_repeat(pui_ani_h ani_h)
 {
-       if (!ani_h || !ani_h->ani)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return 0;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani_h->ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani_h->ani, PUI_MAGIC_ANI_T, __FUNCTION__);
+               return 0;
+       }
 
        return ani_h->ani->repeat;
 }
@@ -272,8 +312,11 @@ pui_ani_get_repeat(pui_ani_h ani_h)
 pui_backend_ani_data *
 pui_ani_get_ani_data(pui_ani_t *ani)
 {
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return NULL;
+       }
 
        return ani->ani_data;
 }
@@ -285,9 +328,9 @@ pui_ani_status_update(pui_ani_t *ani, pui_ani_status status)
        pui_ani_h ani_h;
        PUI_Event_Animation_Status *e = NULL;
 
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
        {
-               pui_err("Invalid pui ani !\n");
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return;
        }
 
@@ -347,9 +390,9 @@ pui_ani_status_get(pui_ani_t *ani)
 {
        pui_ani_status status = PUI_ANI_STATUS_UNKNOWN;
 
-       if (!ani)
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
        {
-               pui_err("Invalid pui ani !\n");
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
                return status;
        }
 
@@ -364,8 +407,11 @@ _pui_ani_control_with_force(pui_ani_h ani_h, pui_ani_cmd cmd, int repeat, pui_bo
        pui_h handle = NULL;
        pui_backend_ani_func *ani_func = NULL;
 
-       if (!ani_h)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return PUI_ERROR_INVALID_ANI_HANDLE;
+       }
 
        if (cmd < PUI_ANI_CMD_START || cmd >= PUI_ANI_CMD_LAST)
        {
@@ -382,9 +428,21 @@ _pui_ani_control_with_force(pui_ani_h ani_h, pui_ani_cmd cmd, int repeat, pui_bo
        handle = ani_h->pui_handle;
        ani = ani_h->ani;
 
-       if (!ani || !ani->ani_data)
+       if (!PUI_MAGIC_CHECK(handle, PUI_MAGIC_PUI_H))
        {
-               pui_err("Invalid ani or ani_data !\n");
+               PUI_MAGIC_FAIL(handle, PUI_MAGIC_PUI_H, __FUNCTION__);
+               return PUI_ERROR_INTERNAL;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
+               return PUI_ERROR_INTERNAL;
+       }
+
+       if (!ani->ani_data)
+       {
+               pui_err("Invalid ani_data !\n");
                return PUI_ERROR_INTERNAL;
        }
 
@@ -484,6 +542,24 @@ _cb_visibility_change(void *data, int type EINA_UNUSED, void *event)
        Ecore_Wl2_Event_Window_Visibility_Change *ev;
        PUI_Event_Animation_Status *e = NULL;
 
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
+       if (!PUI_MAGIC_CHECK(ph, PUI_MAGIC_PUI_H))
+       {
+               PUI_MAGIC_FAIL(ph, PUI_MAGIC_PUI_H, __FUNCTION__);
+               return ECORE_CALLBACK_PASS_ON;
+       }
+
        ev = event;
 
        /* check if this is needed */
@@ -530,9 +606,9 @@ _pui_ani_event_handlers_init(pui_ani_h ani_h)
 {
        Ecore_Event_Handler *h = NULL;
 
-       if (!ani_h)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
        {
-               pui_err("Invalid handle !\n");
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return;
        }
 
@@ -547,9 +623,9 @@ _pui_ani_event_handlers_init(pui_ani_h ani_h)
 static void
 _pui_ani_event_handlers_shutdown(pui_ani_h ani_h)
 {
-       if (!ani_h)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
        {
-               pui_err("Invalid handle !\n");
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return;
        }
 
@@ -570,9 +646,15 @@ pui_ani_create(pui_h handle, pui_id id)
        pui_ani_t *ani = NULL;
        pui_backend_ani_data *ani_data = NULL;
 
-       if (!handle || !handle->backend_module_data)
+       if (!PUI_MAGIC_CHECK(handle, PUI_MAGIC_PUI_H))
        {
-               pui_err("Invalid pui handle or backend module data !\n");
+               PUI_MAGIC_FAIL(handle, PUI_MAGIC_PUI_H, __FUNCTION__);
+               return NULL;
+       }
+
+       if (!handle->backend_module_data)
+       {
+               pui_err("Invalid backend module data !\n");
                return NULL;
        }
 
@@ -596,6 +678,8 @@ pui_ani_create(pui_h handle, pui_id id)
        ani_h->pui_handle = handle;
        ani_h->ecore_event_hdls = NULL;
 
+       PUI_MAGIC_SET(ani_h, PUI_MAGIC_ANI_H);
+
        _pui_ani_event_handlers_init(ani_h);
 
        ani = (pui_ani_t *)calloc(1, sizeof(pui_ani_t));
@@ -617,6 +701,8 @@ pui_ani_create(pui_h handle, pui_id id)
 
        handle->ani_handles = eina_list_append(handle->ani_handles, ani_h);
 
+       PUI_MAGIC_SET(ani, PUI_MAGIC_ANI_T);
+
        return ani_h;
 
 err:
@@ -626,7 +712,10 @@ err:
        }
 
        if (ani_h)
+       {
+               PUI_MAGIC_SET(ani_h, PUI_MAGIC_NONE);
                free(ani_h);
+       }
 
        return NULL;
 }
@@ -638,12 +727,27 @@ pui_ani_destroy(pui_ani_h ani_h)
        pui_ani_t *ani = NULL;
        pui_backend_module_data *backend_module_data = NULL;
 
-       if (!ani_h || !ani_h->pui_handle)
+       if (!PUI_MAGIC_CHECK(ani_h, PUI_MAGIC_ANI_H))
+       {
+               PUI_MAGIC_FAIL(ani_h, PUI_MAGIC_ANI_H, __FUNCTION__);
                return;
+       }
 
        handle = ani_h->pui_handle;
        ani = ani_h->ani;
 
+       if (!PUI_MAGIC_CHECK(handle, PUI_MAGIC_PUI_H))
+       {
+               PUI_MAGIC_FAIL(handle, PUI_MAGIC_PUI_H, __FUNCTION__);
+               return;
+       }
+
+       if (!PUI_MAGIC_CHECK(ani, PUI_MAGIC_ANI_T))
+       {
+               PUI_MAGIC_FAIL(ani, PUI_MAGIC_ANI_T, __FUNCTION__);
+               return;
+       }
+
        /* stop the animation being played already if any */
        if (ani->status == PUI_ANI_STATUS_STARTED || ani->status == PUI_ANI_STATUS_RUNNING)
                pui_ani_control(ani_h, PUI_ANI_CMD_STOP, 0);
@@ -658,6 +762,7 @@ pui_ani_destroy(pui_ani_h ani_h)
                ani->frame_cb_timer = NULL;
        }
 
+       PUI_MAGIC_SET(ani_h->ani, PUI_MAGIC_NONE);
        free(ani_h->ani);
 
        _pui_ani_event_handlers_shutdown(ani_h);
@@ -670,6 +775,8 @@ pui_ani_destroy(pui_ani_h ani_h)
 
        handle->ani_handles = eina_list_remove(handle->ani_handles, ani_h);
 
+       PUI_MAGIC_SET(ani_h, PUI_MAGIC_NONE);
+
        free(ani_h->id);
        free(ani_h);
 }