jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9123e5add273b5488981d1cc8b1a031815ffccb4

commit 9123e5add273b5488981d1cc8b1a031815ffccb4
Author: Jean-Philippe Andre <[email protected]>
Date:   Fri Aug 26 11:27:37 2016 +0900

    evas events: Add efl_isa safety checks in legacy EAPI
    
    This removes useless magic checks (only check whether the
    arg is not null) that were not even present in every function.
    The cost should be similar or lower than an eo function call.
---
 src/lib/evas/canvas/evas_callbacks.c | 57 ++++++++++--------------------------
 src/lib/evas/canvas/evas_events.c    | 33 ++++++++++-----------
 2 files changed, 31 insertions(+), 59 deletions(-)

diff --git a/src/lib/evas/canvas/evas_callbacks.c 
b/src/lib/evas/canvas/evas_callbacks.c
index 0e2835b..e1ccac7 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -370,12 +370,9 @@ evas_object_event_callback_add(Evas_Object *eo_obj, 
Evas_Callback_Type type, Eva
 EAPI void
 evas_object_event_callback_priority_add(Evas_Object *eo_obj, 
Evas_Callback_Type type, Evas_Callback_Priority priority, Evas_Object_Event_Cb 
func, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_obj, EFL_CANVAS_OBJECT_CLASS));
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
 
-   MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-
    if (!obj) return;
    if (!func) return;
 
@@ -395,12 +392,9 @@ evas_object_event_callback_priority_add(Evas_Object 
*eo_obj, Evas_Callback_Type
 EAPI void *
 evas_object_event_callback_del(Evas_Object *eo_obj, Evas_Callback_Type type, 
Evas_Object_Event_Cb func)
 {
-   _eo_evas_object_cb_info *info;
-
-   MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
-   return NULL;
-   MAGIC_CHECK_END();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(eo_obj, EFL_CANVAS_OBJECT_CLASS), 
NULL);
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
+   _eo_evas_object_cb_info *info;
 
    if (!obj) return NULL;
    if (!func) return NULL;
@@ -426,12 +420,9 @@ evas_object_event_callback_del(Evas_Object *eo_obj, 
Evas_Callback_Type type, Eva
 EAPI void *
 evas_object_event_callback_del_full(Evas_Object *eo_obj, Evas_Callback_Type 
type, Evas_Object_Event_Cb func, const void *data)
 {
-   _eo_evas_object_cb_info *info;
-
-   MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
-   return NULL;
-   MAGIC_CHECK_END();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(eo_obj, EFL_CANVAS_OBJECT_CLASS), 
NULL);
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, 
EFL_CANVAS_OBJECT_CLASS);
+   _eo_evas_object_cb_info *info;
 
    if (!obj) return NULL;
    if (!func) return NULL;
@@ -464,12 +455,9 @@ evas_event_callback_add(Evas *eo_e, Evas_Callback_Type 
type, Evas_Event_Cb func,
 EAPI void
 evas_event_callback_priority_add(Evas *eo_e, Evas_Callback_Type type, 
Evas_Callback_Priority priority, Evas_Event_Cb func, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
 
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
-
    if (!func) return;
 
    _eo_evas_cb_info *cb_info = calloc(1, sizeof(*cb_info));
@@ -486,13 +474,10 @@ evas_event_callback_priority_add(Evas *eo_e, 
Evas_Callback_Type type, Evas_Callb
 EAPI void *
 evas_event_callback_del(Evas *eo_e, Evas_Callback_Type type, Evas_Event_Cb 
func)
 {
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(eo_e, EVAS_CANVAS_CLASS), NULL);
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _eo_evas_cb_info *info;
 
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return NULL;
-   MAGIC_CHECK_END();
-
    if (!e) return NULL;
    if (!func) return NULL;
 
@@ -517,12 +502,9 @@ evas_event_callback_del(Evas *eo_e, Evas_Callback_Type 
type, Evas_Event_Cb func)
 EAPI void *
 evas_event_callback_del_full(Evas *eo_e, Evas_Callback_Type type, 
Evas_Event_Cb func, const void *data)
 {
-   _eo_evas_cb_info *info;
-
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return NULL;
-   MAGIC_CHECK_END();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(eo_e, EVAS_CANVAS_CLASS), NULL);
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
+   _eo_evas_cb_info *info;
 
    if (!e) return NULL;
    if (!func) return NULL;
@@ -548,13 +530,10 @@ evas_event_callback_del_full(Evas *eo_e, 
Evas_Callback_Type type, Evas_Event_Cb
 EAPI void
 evas_post_event_callback_push(Evas *eo_e, Evas_Object_Event_Post_Cb func, 
const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
+   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Post_Callback *pc;
 
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
-
-   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    if (!e) return;
    EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, );
    pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback);
@@ -570,14 +549,11 @@ evas_post_event_callback_push(Evas *eo_e, 
Evas_Object_Event_Post_Cb func, const
 EAPI void
 evas_post_event_callback_remove(Evas *eo_e, Evas_Object_Event_Post_Cb func)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
+   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Post_Callback *pc;
    Eina_List *l;
 
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
-
-   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    if (!e) return;
    EINA_LIST_FOREACH(e->post_events, l, pc)
      {
@@ -592,14 +568,11 @@ evas_post_event_callback_remove(Evas *eo_e, 
Evas_Object_Event_Post_Cb func)
 EAPI void
 evas_post_event_callback_remove_full(Evas *eo_e, Evas_Object_Event_Post_Cb 
func, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
+   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    Evas_Post_Callback *pc;
    Eina_List *l;
 
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
-
-   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    if (!e) return;
    EINA_LIST_FOREACH(e->post_events, l, pc)
      {
diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index bc09992..6a17cb4 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -1140,18 +1140,12 @@ _canvas_event_thaw_eval_internal(Eo *eo_e, 
Evas_Public_Data *e)
 EAPI void
 evas_event_freeze(Evas *eo_e)
 {
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
    efl_event_freeze(eo_e);
 }
 
 EAPI void
 evas_event_thaw(Evas *eo_e)
 {
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
    efl_event_thaw(eo_e);
 }
 
@@ -1191,23 +1185,16 @@ _evas_canvas_efl_object_event_thaw(Eo *eo_e, 
Evas_Public_Data *e)
 EAPI int
 evas_event_freeze_get(const Evas *eo_e)
 {
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return 0;
-   MAGIC_CHECK_END();
-   int ret = 0;
-   ret = efl_event_freeze_count_get((Eo *)eo_e);
-   return ret;
+   return efl_event_freeze_count_get(eo_e);
 }
 
 EAPI void
 evas_event_thaw_eval(Evas *eo_e)
 {
-   MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
-   return;
-   MAGIC_CHECK_END();
-   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
-   if (0 == evas_event_freeze_get(eo_e))
+   if (!evas_event_freeze_get(eo_e))
      {
+        EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
+        Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
         _canvas_event_thaw_eval_internal(eo_e, e);
      }
 }
@@ -1676,6 +1663,7 @@ _canvas_event_feed_mouse_wheel_internal(Eo *eo_e, 
Efl_Input_Pointer_Data *pe)
 EAPI void
 evas_event_feed_mouse_wheel(Eo *eo_e, int direction, int z, unsigned int 
timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Efl_Input_Pointer_Data *ev = NULL;
    Efl_Input_Pointer *evt = efl_input_instance_get(EFL_INPUT_POINTER_CLASS, 
eo_e, (void **) &ev);
 
@@ -2221,12 +2209,14 @@ _canvas_event_feed_mouse_inout_legacy(Eo *eo_e, 
unsigned int timestamp,
 EAPI void
 evas_event_feed_mouse_in(Eo *eo_e, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    _canvas_event_feed_mouse_inout_legacy(eo_e, timestamp, data, EINA_TRUE);
 }
 
 EAPI void
 evas_event_feed_mouse_out(Eo *eo_e, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    _canvas_event_feed_mouse_inout_legacy(eo_e, timestamp, data, EINA_FALSE);
 }
 
@@ -2416,6 +2406,7 @@ _canvas_event_feed_multi_internal(Evas *eo_e, 
Evas_Public_Data *e,
 EAPI void
 evas_event_input_multi_down(Eo *eo_e, int d, int x, int y, double rad, double 
radx, double rady, double pres, double ang, double fx, double fy, 
Evas_Button_Flags flags, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_multi_internal(eo_e, e, d,
                                      x - e->framespace.x, y - e->framespace.y,
@@ -2426,6 +2417,7 @@ evas_event_input_multi_down(Eo *eo_e, int d, int x, int 
y, double rad, double ra
 EAPI void
 evas_event_feed_multi_down(Eo *eo_e, int d, int x, int y, double rad, double 
radx, double rady, double pres, double ang, double fx, double fy, 
Evas_Button_Flags flags, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_multi_internal(eo_e, e, d, x, y, rad, radx, rady, pres, 
ang,
                                      fx, fy, flags, timestamp, data, 
EFL_POINTER_ACTION_DOWN);
@@ -2434,6 +2426,7 @@ evas_event_feed_multi_down(Eo *eo_e, int d, int x, int y, 
double rad, double rad
 EAPI void
 evas_event_input_multi_up(Eo *eo_e, int d, int x, int y, double rad, double 
radx, double rady, double pres, double ang, double fx, double fy, 
Evas_Button_Flags flags, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_multi_internal(eo_e, e, d,
                                      x - e->framespace.x, y - e->framespace.y,
@@ -2444,6 +2437,7 @@ evas_event_input_multi_up(Eo *eo_e, int d, int x, int y, 
double rad, double radx
 EAPI void
 evas_event_feed_multi_up(Eo *eo_e, int d, int x, int y, double rad, double 
radx, double rady, double pres, double ang, double fx, double fy, 
Evas_Button_Flags flags, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_multi_internal(eo_e, e, d, x, y, rad, radx, rady, pres, 
ang,
                                      fx, fy, flags, timestamp, data, 
EFL_POINTER_ACTION_UP);
@@ -2805,6 +2799,7 @@ _canvas_event_feed_key_legacy(Eo *eo_e, Evas_Public_Data 
*e,
 EAPI void
 evas_event_feed_key_down(Eo *eo_e, const char *keyname, const char *key, const 
char *string, const char *compose, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_key_legacy(eo_e, e, keyname, key, string,
                                  compose, timestamp, data, 0, 1);
@@ -2813,6 +2808,7 @@ evas_event_feed_key_down(Eo *eo_e, const char *keyname, 
const char *key, const c
 EAPI void
 evas_event_feed_key_up(Eo *eo_e, const char *keyname, const char *key, const 
char *string, const char *compose, unsigned int timestamp, const void *data)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_key_legacy(eo_e, e, keyname, key, string,
                                  compose, timestamp, data, 0, 0);
@@ -2821,6 +2817,7 @@ evas_event_feed_key_up(Eo *eo_e, const char *keyname, 
const char *key, const cha
 EAPI void
 evas_event_feed_key_down_with_keycode(Eo *eo_e, const char *keyname, const 
char *key, const char *string, const char *compose, unsigned int timestamp, 
const void *data, unsigned int keycode)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_key_legacy(eo_e, e, keyname, key, string,
                                  compose, timestamp, data, keycode, 1);
@@ -2829,6 +2826,7 @@ evas_event_feed_key_down_with_keycode(Eo *eo_e, const 
char *keyname, const char
 EAPI void
 evas_event_feed_key_up_with_keycode(Eo *eo_e, const char *keyname, const char 
*key, const char *string, const char *compose, unsigned int timestamp, const 
void *data, unsigned int keycode)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
    _canvas_event_feed_key_legacy(eo_e, e, keyname, key, string,
                                  compose, timestamp, data, keycode, 0);
@@ -3176,6 +3174,7 @@ _efl_canvas_object_pointer_mode_get(Eo *eo_obj 
EINA_UNUSED, Evas_Object_Protecte
 EAPI void
 evas_event_refeed_event(Eo *eo_e, void *event_copy, Evas_Callback_Type 
event_type)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo_e, EVAS_CANVAS_CLASS));
    if (!event_copy) return;
 
    switch (event_type)

-- 


Reply via email to