gesture: add APIs to register callback functions when gesture events are triggered 31/311931/1 accepted/tizen/8.0/unified/20240624.160045
authorduna.oh <duna.oh@samsung.com>
Thu, 30 May 2024 13:10:48 +0000 (22:10 +0900)
committerduna.oh <duna.oh@samsung.com>
Thu, 30 May 2024 13:57:52 +0000 (22:57 +0900)
introduce new APIs that allow application to set up a callback function which gets
executed when gesture events are detected.

Change-Id: Ic740dd1031120e379bda19386bb08bf6fdbaf646

include/efl_util.h
src/efl_util.c

index ed8755dd3999dbda4f1c1f866fd485536e7724f4..e3305c172ec733028ef271093306a356e150da5a 100644 (file)
@@ -972,6 +972,15 @@ API int efl_util_gesture_activate_set(efl_util_gesture_h gesture_h, unsigned int
  */
 API int efl_util_gesture_activate_set_on_window(efl_util_gesture_h gesture_h, Evas_Object *window, unsigned int type, Eina_Bool active);
 
+typedef void (*efl_util_gesture_edge_swipe_cb)(void *data, int mode, int fingers, int sx, int sy, int edge);
+typedef void (*efl_util_gesture_edge_drag_cb)(void *data, int mode, int fingers, int cx, int cy, int edge);
+typedef void (*efl_util_gesture_tap_cb)(void *data, int mode, int fingers, int repeats);
+typedef void (*efl_util_gesture_palm_cover_cb)(void *data, int mode, int duration, int cx, int cy, int size, double pressure);
+
+API int efl_util_gesture_edge_swipe_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_edge_swipe_cb cb_func, void *cb_data);
+API int efl_util_gesture_edge_drag_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_edge_drag_cb cb_func, void *cb_data);
+API int efl_util_gesture_tap_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_tap_cb cb_func, void *cb_data);
+API int efl_util_gesture_palm_cover_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_palm_cover_cb cb_func, void *cb_data);
 /**
  * @}
  */
index 76ef0dcc5f739a14ab90f3672ab876f165059166..174cd296bc93252507d859c6614e2196399b011d 100644 (file)
@@ -189,6 +189,11 @@ typedef struct _Efl_Util_Data_Default_Queue
          struct tizen_gesture *proto;
          int request_notified;
          int event_init;
+         efl_util_gesture_edge_swipe_cb edge_swipe_cb;
+         efl_util_gesture_edge_drag_cb edge_drag_cb;
+         efl_util_gesture_tap_cb tap_cb;
+         efl_util_gesture_palm_cover_cb palm_cover_cb;
+         void *data;
       } gesture;
    } wl;
 } Efl_Util_Data_Default_Queue;
@@ -2477,12 +2482,14 @@ API int EFL_UTIL_EVENT_GESTURE_PALM_COVER = 0;
 static void
 _cb_gesture_edge_swipe_notify(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t fingers EINA_UNUSED, uint32_t edge EINA_UNUSED, uint32_t edge_size EINA_UNUSED, uint32_t start_point EINA_UNUSED, uint32_t end_point EINA_UNUSED, uint32_t error)
 {
+   LOGD("");
    _eflutil_defaultqueue.wl.gesture.request_notified = error;
 }
 
 static void
 _cb_gesture_edge_swipe(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t mode, uint32_t fingers, int sx, int sy, uint32_t edge)
 {
+   LOGD("");
    efl_util_event_gesture_edge_swipe_s *ev = NULL;
 
    ev = (efl_util_event_gesture_edge_swipe_s *)calloc(1, sizeof(*ev));
@@ -2496,17 +2503,25 @@ _cb_gesture_edge_swipe(void *data EINA_UNUSED, struct tizen_gesture *tizen_gestu
    ev->edge = edge;
 
    ecore_event_add(EFL_UTIL_EVENT_GESTURE_EDGE_SWIPE, ev, NULL, NULL);
+
+   if (_eflutil_defaultqueue.wl.gesture.edge_swipe_cb)
+     {
+        LOGD("edge_swipe_cb");
+        _eflutil_defaultqueue.wl.gesture.edge_swipe_cb(_eflutil_defaultqueue.wl.gesture.data, mode, fingers, sx, sy, edge);
+     }
 }
 
 static void
 _cb_gesture_edge_drag_notify(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t fingers EINA_UNUSED, uint32_t edge EINA_UNUSED, uint32_t edge_size EINA_UNUSED, uint32_t start_point EINA_UNUSED, uint32_t end_point EINA_UNUSED, uint32_t error)
 {
+   LOGD("");
    _eflutil_defaultqueue.wl.gesture.request_notified = error;
 }
 
 static void
 _cb_gesture_edge_drag(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t mode, uint32_t fingers, int cx, int cy, uint32_t edge)
 {
+   LOGD("");
    efl_util_event_gesture_edge_drag_s *ev = NULL;
 
    ev = (efl_util_event_gesture_edge_drag_s *)calloc(1, sizeof(*ev));
@@ -2520,17 +2535,25 @@ _cb_gesture_edge_drag(void *data EINA_UNUSED, struct tizen_gesture *tizen_gestur
    ev->edge = edge;
 
    ecore_event_add(EFL_UTIL_EVENT_GESTURE_EDGE_DRAG, ev, NULL, NULL);
+
+   if (_eflutil_defaultqueue.wl.gesture.edge_drag_cb)
+     {
+        LOGD("edge_drag_cb");
+        _eflutil_defaultqueue.wl.gesture.edge_drag_cb(_eflutil_defaultqueue.wl.gesture.data, mode, fingers, cx, cy, edge);
+     }
 }
 
 static void
 _cb_gesture_tap_notify(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t fingers EINA_UNUSED, uint32_t repeat EINA_UNUSED, uint32_t error)
 {
+   LOGD("");
    _eflutil_defaultqueue.wl.gesture.request_notified = error;
 }
 
 static void
 _cb_gesture_tap(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, uint32_t mode, uint32_t fingers, uint32_t repeats)
 {
+   LOGD("");
    efl_util_event_gesture_tap_s *ev = NULL;
 
    ev = (efl_util_event_gesture_tap_s *)calloc(1, sizeof(*ev));
@@ -2542,12 +2565,19 @@ _cb_gesture_tap(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA
    ev->repeats = repeats;
 
    ecore_event_add(EFL_UTIL_EVENT_GESTURE_TAP, ev, NULL, NULL);
+
+   if (_eflutil_defaultqueue.wl.gesture.tap_cb)
+     {
+        LOGD("tap_cb");
+        _eflutil_defaultqueue.wl.gesture.tap_cb(_eflutil_defaultqueue.wl.gesture.data, mode, fingers, repeats);
+     }
 }
 /* LCOV_EXCL_STOP */
 
 static void
 _cb_gesture_palm_cover_notify(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, struct wl_surface *surface EINA_UNUSED, uint32_t error)
 {
+   LOGD("");
    _eflutil_defaultqueue.wl.gesture.request_notified = error;
 }
 
@@ -2555,6 +2585,7 @@ _cb_gesture_palm_cover_notify(void *data EINA_UNUSED, struct tizen_gesture *tize
 static void
 _cb_gesture_palm_cover(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, struct wl_surface *surface, uint32_t mode, uint32_t duration, int cx, int cy, uint32_t size, wl_fixed_t pressure)
 {
+   LOGD("");
    efl_util_event_gesture_palm_cover_s *ev = NULL;
 
    ev = (efl_util_event_gesture_palm_cover_s *)calloc(1, sizeof(*ev));
@@ -2569,12 +2600,19 @@ _cb_gesture_palm_cover(void *data EINA_UNUSED, struct tizen_gesture *tizen_gestu
    ev->pressure = wl_fixed_to_int(pressure);
 
    ecore_event_add(EFL_UTIL_EVENT_GESTURE_PALM_COVER, ev, NULL, NULL);
+
+   if (_eflutil_defaultqueue.wl.gesture.palm_cover_cb)
+     {
+        LOGD("palm_cover_cb");
+        _eflutil_defaultqueue.wl.gesture.palm_cover_cb(_eflutil_defaultqueue.wl.gesture.data, mode, duration, cx, cy, size, pressure);
+     }
 }
 /* LCOV_EXCL_STOP */
 
 static void
 _cb_gesture_activate_notify(void *data EINA_UNUSED, struct tizen_gesture *tizen_gesture EINA_UNUSED, struct wl_surface *surface EINA_UNUSED, uint32_t type EINA_UNUSED, uint32_t active EINA_UNUSED, uint32_t error)
 {
+   LOGD("");
    _eflutil_defaultqueue.wl.gesture.request_notified = error;
 }
 
@@ -2618,6 +2656,7 @@ _efl_util_gesture_verify_request_notified()
 static int
 _efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
    Efl_Util_Gesture_Edge_Swipe_Grab_Data *edge_swipe_data = NULL;
@@ -2655,6 +2694,7 @@ _efl_util_gesture_grab_edge_swipe(efl_util_gesture_data data, Eina_Bool grabbed)
 static int
 _efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
    Efl_Util_Gesture_Edge_Drag_Grab_Data *edge_drag_data = NULL;
@@ -2692,6 +2732,7 @@ _efl_util_gesture_grab_edge_drag(efl_util_gesture_data data, Eina_Bool grabbed)
 static int
 _efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
    Efl_Util_Gesture_Tap_Grab_Data *tap_data = NULL;
@@ -2723,6 +2764,7 @@ _efl_util_gesture_grab_tap(efl_util_gesture_data data, Eina_Bool grabbed)
 static int
 _efl_util_gesture_grab_palm_cover(efl_util_gesture_data data, Eina_Bool grabbed)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
 
@@ -2747,6 +2789,7 @@ _efl_util_gesture_grab_palm_cover(efl_util_gesture_data data, Eina_Bool grabbed)
 API efl_util_gesture_h
 efl_util_gesture_initialize(void)
 {
+   LOGD("");
    efl_util_gesture_h gesture_h = NULL;
 
    gesture_h = (efl_util_gesture_h)calloc(1, sizeof(struct _efl_util_gesture_h));
@@ -2797,6 +2840,7 @@ out:
 API int
 efl_util_gesture_deinitialize(efl_util_gesture_h gesture_h)
 {
+   LOGD("");
    EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
    EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
 
@@ -2821,6 +2865,7 @@ efl_util_gesture_deinitialize(efl_util_gesture_h gesture_h)
 API efl_util_gesture_data
 efl_util_gesture_edge_swipe_new(efl_util_gesture_h gesture_h, unsigned int fingers, efl_util_gesture_edge_e edge)
 {
+   LOGD("");
    Efl_Util_Gesture_Edge_Swipe_Grab_Data *data;
 
    if (!gesture_h || gesture_h->init == EINA_FALSE)
@@ -2855,6 +2900,7 @@ efl_util_gesture_edge_swipe_new(efl_util_gesture_h gesture_h, unsigned int finge
 API int
 efl_util_gesture_edge_swipe_free(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    if (!gesture_h || gesture_h->init == EINA_FALSE)
      {
         return EFL_UTIL_ERROR_INVALID_PARAMETER;
@@ -2874,6 +2920,7 @@ efl_util_gesture_edge_swipe_free(efl_util_gesture_h gesture_h, efl_util_gesture_
 API int
 efl_util_gesture_edge_swipe_size_set(efl_util_gesture_data data, efl_util_gesture_edge_size_e edge_size, unsigned int start_point, unsigned int end_point)
 {
+   LOGD("");
    Efl_Util_Gesture_Edge_Swipe_Grab_Data *edge_swipe_data = data;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(edge_swipe_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
@@ -2893,6 +2940,7 @@ efl_util_gesture_edge_swipe_size_set(efl_util_gesture_data data, efl_util_gestur
 API efl_util_gesture_data
 efl_util_gesture_edge_drag_new(efl_util_gesture_h gesture_h, unsigned int fingers, efl_util_gesture_edge_e edge)
 {
+   LOGD("");
    Efl_Util_Gesture_Edge_Drag_Grab_Data *data;
 
    if (!gesture_h || gesture_h->init == EINA_FALSE)
@@ -2927,6 +2975,7 @@ efl_util_gesture_edge_drag_new(efl_util_gesture_h gesture_h, unsigned int finger
 API int
 efl_util_gesture_edge_drag_free(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    if (!gesture_h || gesture_h->init == EINA_FALSE)
      {
         return EFL_UTIL_ERROR_INVALID_PARAMETER;
@@ -2946,6 +2995,7 @@ efl_util_gesture_edge_drag_free(efl_util_gesture_h gesture_h, efl_util_gesture_d
 API int
 efl_util_gesture_edge_drag_size_set(efl_util_gesture_data data, efl_util_gesture_edge_size_e edge_size, unsigned int start_point, unsigned int end_point)
 {
+   LOGD("");
    Efl_Util_Gesture_Edge_Drag_Grab_Data *edge_drag_data = data;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(edge_drag_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
@@ -2965,6 +3015,7 @@ efl_util_gesture_edge_drag_size_set(efl_util_gesture_data data, efl_util_gesture
 API efl_util_gesture_data
 efl_util_gesture_tap_new(efl_util_gesture_h gesture_h, unsigned int fingers, unsigned int repeats)
 {
+   LOGD("");
    Efl_Util_Gesture_Tap_Grab_Data *data;
 
    if (!gesture_h || gesture_h->init == EINA_FALSE)
@@ -2998,6 +3049,7 @@ efl_util_gesture_tap_new(efl_util_gesture_h gesture_h, unsigned int fingers, uns
 API int
 efl_util_gesture_tap_free(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    if (!gesture_h || gesture_h->init == EINA_FALSE)
      {
         return EFL_UTIL_ERROR_INVALID_PARAMETER;
@@ -3017,6 +3069,7 @@ efl_util_gesture_tap_free(efl_util_gesture_h gesture_h, efl_util_gesture_data da
 API efl_util_gesture_data
 efl_util_gesture_palm_cover_new(efl_util_gesture_h gesture_h)
 {
+   LOGD("");
    Efl_Util_Gesture_Palm_Cover_Grab_Data *data;
 
    if (!gesture_h || gesture_h->init == EINA_FALSE)
@@ -3042,6 +3095,7 @@ efl_util_gesture_palm_cover_new(efl_util_gesture_h gesture_h)
 API int
 efl_util_gesture_palm_cover_free(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    if (!gesture_h || gesture_h->init == EINA_FALSE)
      {
         return EFL_UTIL_ERROR_INVALID_PARAMETER;
@@ -3062,6 +3116,7 @@ efl_util_gesture_palm_cover_free(efl_util_gesture_h gesture_h, efl_util_gesture_
 API int
 efl_util_gesture_grab(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
 
@@ -3095,6 +3150,7 @@ efl_util_gesture_grab(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 API int
 efl_util_gesture_ungrab(efl_util_gesture_h gesture_h, efl_util_gesture_data data)
 {
+   LOGD("");
    int ret = EFL_UTIL_ERROR_NONE;
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
 
@@ -3129,6 +3185,7 @@ efl_util_gesture_ungrab(efl_util_gesture_h gesture_h, efl_util_gesture_data data
 API int
 efl_util_gesture_select(efl_util_gesture_h gesture_h, Evas_Object *window, efl_util_gesture_data data)
 {
+   LOGD("");
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
    Ecore_Wl2_Window *wlwin;
    struct wl_surface *surface;
@@ -3161,6 +3218,7 @@ efl_util_gesture_select(efl_util_gesture_h gesture_h, Evas_Object *window, efl_u
 API int
 efl_util_gesture_deselect(efl_util_gesture_h gesture_h, Evas_Object *window, efl_util_gesture_data data)
 {
+   LOGD("");
    Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
    Ecore_Wl2_Window *wlwin;
    struct wl_surface *surface;
@@ -3194,6 +3252,7 @@ efl_util_gesture_deselect(efl_util_gesture_h gesture_h, Evas_Object *window, efl
 API int
 efl_util_gesture_activate_set(efl_util_gesture_h gesture_h, unsigned int type, Eina_Bool active)
 {
+   LOGD("");
    int ret;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
@@ -3211,6 +3270,7 @@ efl_util_gesture_activate_set(efl_util_gesture_h gesture_h, unsigned int type, E
 API int
 efl_util_gesture_activate_set_on_window(efl_util_gesture_h gesture_h, Evas_Object *window, unsigned int type, Eina_Bool active)
 {
+   LOGD("");
    Ecore_Wl2_Window *wlwin;
    struct wl_surface *surface;
    int ret;
@@ -3233,3 +3293,82 @@ efl_util_gesture_activate_set_on_window(efl_util_gesture_h gesture_h, Evas_Objec
 
    return ret;
 }
+
+API int efl_util_gesture_edge_swipe_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_edge_swipe_cb cb_func, void *cb_data)
+{
+   LOGD("");
+   int ret = EFL_UTIL_ERROR_NONE;
+   Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
+
+   base_data = (Efl_Util_Gesture_Common_Grab_Data *)data;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(base_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(base_data->type == TIZEN_GESTURE_TYPE_EDGE_SWIPE,
+                                  EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+   _eflutil_defaultqueue.wl.gesture.edge_swipe_cb = cb_func;
+   _eflutil_defaultqueue.wl.gesture.data = cb_data;
+
+   return ret;
+}
+API int efl_util_gesture_edge_drag_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_edge_drag_cb cb_func, void *cb_data)
+{
+   LOGD("");
+   int ret = EFL_UTIL_ERROR_NONE;
+   Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
+
+   base_data = (Efl_Util_Gesture_Common_Grab_Data *)data;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(base_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(base_data->type == TIZEN_GESTURE_TYPE_EDGE_DRAG,
+                                  EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+   _eflutil_defaultqueue.wl.gesture.edge_drag_cb = cb_func;
+   _eflutil_defaultqueue.wl.gesture.data = cb_data;
+
+   return ret;
+}
+API int efl_util_gesture_tap_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_tap_cb cb_func, void *cb_data)
+{
+   LOGD("");
+   int ret = EFL_UTIL_ERROR_NONE;
+   Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
+
+   base_data = (Efl_Util_Gesture_Common_Grab_Data *)data;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(base_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(base_data->type == TIZEN_GESTURE_TYPE_TAP,
+                                  EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+   _eflutil_defaultqueue.wl.gesture.tap_cb = cb_func;
+   _eflutil_defaultqueue.wl.gesture.data = cb_data;
+
+   return ret;
+}
+
+
+API int efl_util_gesture_palm_cover_cb_set(efl_util_gesture_h gesture_h, efl_util_gesture_data data, efl_util_gesture_palm_cover_cb cb_func, void *cb_data)
+{
+   LOGD("");
+   int ret = EFL_UTIL_ERROR_NONE;
+   Efl_Util_Gesture_Common_Grab_Data *base_data = NULL;
+
+   base_data = (Efl_Util_Gesture_Common_Grab_Data *)data;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gesture_h, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(gesture_h->init, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(base_data, EFL_UTIL_ERROR_INVALID_PARAMETER);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(base_data->type == TIZEN_GESTURE_TYPE_PALM_COVER,
+                                  EFL_UTIL_ERROR_INVALID_PARAMETER);
+
+   _eflutil_defaultqueue.wl.gesture.palm_cover_cb = cb_func;
+   _eflutil_defaultqueue.wl.gesture.data = cb_data;
+
+   return ret;
+}
\ No newline at end of file