diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-08-19 16:20:39 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-08-26 10:18:01 +0900 |
commit | 57f0c850ec5011313b5ac2f3407b547ef149ac18 (patch) | |
tree | b0ceee2be38c31a69cebba08e1f902ab15657d0e | |
parent | 4746627fcfcdda9b73636d0f2a98def6a526b940 (diff) | |
download | efl-57f0c850ec5011313b5ac2f3407b547ef149ac18.tar.gz |
evas: Move event catcher to evas_callbacks.c
No functional change.
-rw-r--r-- | src/lib/evas/canvas/evas_callbacks.c | 67 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_main.c | 64 | ||||
-rw-r--r-- | src/lib/evas/include/evas_private.h | 1 |
3 files changed, 69 insertions, 63 deletions
diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c index 7de24a3510..6c6f9026df 100644 --- a/src/lib/evas/canvas/evas_callbacks.c +++ b/src/lib/evas/canvas/evas_callbacks.c @@ -578,3 +578,70 @@ evas_post_event_callback_remove_full(Evas *eo_e, Evas_Object_Event_Post_Cb func, } } } + +static void +_animator_repeater(void *data, const Eo_Event *event) +{ + Evas_Object_Protected_Data *obj = data; + + efl_event_callback_call(obj->object, EFL_EVENT_ANIMATOR_TICK, event->info); + DBG("Emitting animator tick on %p.", obj->object); +} + +static void +_check_event_catcher_add(void *data, const Eo_Event *event) +{ + const Efl_Callback_Array_Item *array = event->info; + Evas_Object_Protected_Data *obj = data; + int i; + + for (i = 0; array[i].desc != NULL; i++) + { + if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) + { + if (obj->animator_ref++ > 0) break; + + efl_event_callback_add(obj->layer->evas->evas, EFL_EVENT_ANIMATOR_TICK, _animator_repeater, obj); + INF("Registering an animator tick on canvas %p for object %p.", + obj->layer->evas->evas, obj->object); + } + else if (array[i].desc == EFL_GFX_EVENT_MOVE) + { + obj->move_ref++; + } + } +} + +static void +_check_event_catcher_del(void *data, const Eo_Event *event) +{ + const Efl_Callback_Array_Item *array = event->info; + Evas_Object_Protected_Data *obj = data; + int i; + + for (i = 0; array[i].desc != NULL; i++) + { + if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) + { + if ((--obj->animator_ref) > 0) break; + + efl_event_callback_del(obj->layer->evas->evas, EFL_EVENT_ANIMATOR_TICK, _animator_repeater, obj); + INF("Unregistering an animator tick on canvas %p for object %p.", + obj->layer->evas->evas, obj->object); + } + else if (array[i].desc == EFL_GFX_EVENT_MOVE) + { + obj->move_ref--; + } + } +} + +EFL_CALLBACKS_ARRAY_DEFINE(event_catcher_watch, + { EFL_EVENT_CALLBACK_ADD, _check_event_catcher_add }, + { EFL_EVENT_CALLBACK_DEL, _check_event_catcher_del }); + +void +evas_object_callback_init(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data *obj) +{ + efl_event_callback_array_add(eo_obj, event_catcher_watch(), obj); +} diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index 2f95012a4e..d7e3aa570f 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -86,67 +86,6 @@ _init_cow(void) return EINA_TRUE; } -static void -_animator_repeater(void *data, const Eo_Event *event) -{ - Evas_Object_Protected_Data *obj = data; - - efl_event_callback_call(obj->object, EFL_EVENT_ANIMATOR_TICK, event->info); - DBG("Emitting animator tick on %p.", obj->object); -} - -static void -_check_event_catcher_add(void *data, const Eo_Event *event) -{ - const Efl_Callback_Array_Item *array = event->info; - Evas_Object_Protected_Data *obj = data; - int i; - - for (i = 0; array[i].desc != NULL; i++) - { - if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) - { - if (obj->animator_ref++ > 0) break; - - efl_event_callback_add(obj->layer->evas->evas, EFL_EVENT_ANIMATOR_TICK, _animator_repeater, obj); - INF("Registering an animator tick on canvas %p for object %p.", - obj->layer->evas->evas, obj->object); - } - else if (array[i].desc == EFL_GFX_EVENT_MOVE) - { - obj->move_ref++; - } - } -} - -static void -_check_event_catcher_del(void *data, const Eo_Event *event) -{ - const Efl_Callback_Array_Item *array = event->info; - Evas_Object_Protected_Data *obj = data; - int i; - - for (i = 0; array[i].desc != NULL; i++) - { - if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) - { - if ((--obj->animator_ref) > 0) break; - - efl_event_callback_del(obj->layer->evas->evas, EFL_EVENT_ANIMATOR_TICK, _animator_repeater, obj); - INF("Unregistering an animator tick on canvas %p for object %p.", - obj->layer->evas->evas, obj->object); - } - else if (array[i].desc == EFL_GFX_EVENT_MOVE) - { - obj->move_ref--; - } - } -} - -EFL_CALLBACKS_ARRAY_DEFINE(event_catcher_watch, - { EFL_EVENT_CALLBACK_ADD, _check_event_catcher_add }, - { EFL_EVENT_CALLBACK_DEL, _check_event_catcher_del }); - EOLIAN static Eo * _efl_canvas_object_efl_object_constructor(Eo *eo_obj, Evas_Object_Protected_Data *obj) { @@ -176,8 +115,7 @@ _efl_canvas_object_efl_object_constructor(Eo *eo_obj, Evas_Object_Protected_Data obj->mask = eina_cow_alloc(evas_object_mask_cow); evas_object_inject(eo_obj, obj, evas); - - efl_event_callback_array_add(eo_obj, event_catcher_watch(), obj); + evas_object_callback_init(eo_obj, obj); return eo_obj; } diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 973b28f9dc..5964a66f1c 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1551,6 +1551,7 @@ void evas_object_clip_across_check(Evas_Object *obj, Evas_Object_Protected_Data void evas_object_clip_across_clippees_check(Evas_Object *obj, Evas_Object_Protected_Data *pd); void evas_object_mapped_clip_across_mark(Evas_Object *obj, Evas_Object_Protected_Data *pd); void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info); +void evas_object_callback_init(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data *obj); void evas_object_event_callback_call(Evas_Object *obj, Evas_Object_Protected_Data *pd, Evas_Callback_Type type, void *event_info, int event_id, const Efl_Event_Description *efl_event_desc, Efl_Event *efl_event_info); Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y); int evas_mem_free(int mem_required); |