summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_callbacks.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas/evas_callbacks.c')
-rw-r--r--src/lib/evas/canvas/evas_callbacks.c81
1 files changed, 57 insertions, 24 deletions
diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c
index b9da12bccb..0814b6fa5b 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -471,12 +471,17 @@ 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)
{
- Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj;
Evas_Event_Cb_Wrapper_Info *cb_info;
const Efl_Event_Description *desc;
- if (!obj) return;
- if (!func) return;
+ EINA_SAFETY_ON_NULL_RETURN(eo_obj);
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ EINA_SAFETY_ON_TRUE_RETURN(efl_invalidated_get(eo_obj));
+
+ obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(obj);
cb_info = calloc(1, sizeof(*cb_info));
cb_info->func.object_cb = func;
@@ -494,11 +499,14 @@ 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)
{
- Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj;
Evas_Event_Cb_Wrapper_Info *info;
- if (!obj) return NULL;
- if (!func) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(eo_obj, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
+
+ obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
if (!obj->callbacks) return NULL;
@@ -521,11 +529,14 @@ 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)
{
- Evas_Object_Protected_Data *obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object_Protected_Data *obj;
Evas_Event_Cb_Wrapper_Info *info;
- if (!obj) return NULL;
- if (!func) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(eo_obj, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
+
+ obj = efl_data_scope_safe_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
if (!obj->callbacks) return NULL;
@@ -555,12 +566,17 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Event_Cb_Wrapper_Info *cb_info;
const Efl_Event_Description *desc;
- if (!e) return;
- if (!func) return;
+ EINA_SAFETY_ON_NULL_RETURN(eo_e);
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ EINA_SAFETY_ON_TRUE_RETURN(efl_invalidated_get(eo_e));
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(e);
cb_info = calloc(1, sizeof(*cb_info));
cb_info->func.evas_cb = func;
@@ -577,11 +593,14 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Event_Cb_Wrapper_Info *info;
- if (!e) return NULL;
- if (!func) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(eo_e, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
if (!e->callbacks) return NULL;
@@ -604,11 +623,14 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Event_Cb_Wrapper_Info *info;
- if (!e) return NULL;
- if (!func) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(eo_e, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(e, NULL);
if (!e->callbacks) return NULL;
@@ -631,10 +653,15 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Post_Callback *pc;
- if (!e || e->delete_me) return;
+ EINA_SAFETY_ON_NULL_RETURN(eo_e);
+ EINA_SAFETY_ON_TRUE_RETURN(efl_invalidated_get(eo_e));
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(e);
+ if (e->delete_me) return;
if (e->current_event == EVAS_CALLBACK_LAST)
{
ERR("%s() can only be called from an input event callback!", __FUNCTION__);
@@ -655,11 +682,14 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Post_Callback *pc;
Eina_List *l;
- if (!e) return;
+ EINA_SAFETY_ON_NULL_RETURN(eo_e);
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(e);
EINA_LIST_FOREACH(e->post_events, l, pc)
{
if (pc->func == func)
@@ -673,11 +703,14 @@ 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)
{
- Evas_Public_Data *e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ Evas_Public_Data *e;
Evas_Post_Callback *pc;
Eina_List *l;
- if (!e) return;
+ EINA_SAFETY_ON_NULL_RETURN(eo_e);
+
+ e = efl_data_scope_safe_get(eo_e, EVAS_CANVAS_CLASS);
+ EINA_SAFETY_ON_NULL_RETURN(e);
EINA_LIST_FOREACH(e->post_events, l, pc)
{
if ((pc->func == func) && (pc->data == data))