gesture_manager: Use private data getter to save some lookups

We frequently process an array of several events at once, so we can now
look up the gesture manager private data once for the entire array.

Differential Revision: https://phab.enlightenment.org/D7763

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
This commit is contained in:
Derek Foreman 2019-01-24 11:34:12 -06:00
parent 955c4bd4a0
commit 41a9e1c873
3 changed files with 18 additions and 8 deletions

View File

@ -792,12 +792,17 @@ _check_event_catcher_add(void *data, const Efl_Event *event)
const Efl_Callback_Array_Item_Full *array = event->info;
Evas_Object_Protected_Data *obj = data;
Evas_Callback_Type type = EVAS_CALLBACK_LAST;
void *gd = NULL;
int i;
for (i = 0; array[i].desc != NULL; i++)
{
if (obj->layer->evas->gesture_manager)
_efl_canvas_gesture_manager_callback_add_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc);
{
if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager);
_efl_canvas_gesture_manager_callback_add_hook(gd, obj->object, array[i].desc);
}
if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
{
@ -819,6 +824,7 @@ _check_event_catcher_del(void *data, const Efl_Event *event)
{
const Efl_Callback_Array_Item_Full *array = event->info;
Evas_Object_Protected_Data *obj = data;
void *gd = NULL;
int i;
if (!obj->layer ||
@ -828,7 +834,11 @@ _check_event_catcher_del(void *data, const Efl_Event *event)
for (i = 0; array[i].desc != NULL; i++)
{
if (obj->layer->evas->gesture_manager)
_efl_canvas_gesture_manager_callback_del_hook(obj->layer->evas->gesture_manager, obj->object, array[i].desc);
{
if (!gd) gd = _efl_canvas_gesture_manager_private_data_get(obj->layer->evas->gesture_manager);
_efl_canvas_gesture_manager_callback_del_hook(gd, obj->object, array[i].desc);
}
if (array[i].desc == EFL_EVENT_ANIMATOR_TICK)
{

View File

@ -106,9 +106,9 @@ _efl_canvas_gesture_manager_private_data_get(Eo *obj)
}
void
_efl_canvas_gesture_manager_callback_add_hook(Eo *obj, Eo *target, const Efl_Event_Description *type)
_efl_canvas_gesture_manager_callback_add_hook(void *data, Eo *target, const Efl_Event_Description *type)
{
Efl_Canvas_Gesture_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS);
Efl_Canvas_Gesture_Manager_Data *pd = data;
// if there is a recognizer registered for that event then add it to the gesture context
Efl_Canvas_Gesture_Recognizer *recognizer = eina_hash_find (pd->m_recognizers, &type);
if (recognizer)
@ -119,9 +119,9 @@ _efl_canvas_gesture_manager_callback_add_hook(Eo *obj, Eo *target, const Efl_Eve
}
void
_efl_canvas_gesture_manager_callback_del_hook(Eo *obj, Eo *target, const Efl_Event_Description *type)
_efl_canvas_gesture_manager_callback_del_hook(void *data, Eo *target, const Efl_Event_Description *type)
{
Efl_Canvas_Gesture_Manager_Data *pd = efl_data_scope_get(obj, MY_CLASS);
Efl_Canvas_Gesture_Manager_Data *pd = data;
// if there is a recognizer registered for that event then add it to the gesture context
Efl_Canvas_Gesture_Recognizer *recognizer = eina_hash_find (pd->m_recognizers, &type);
if (recognizer)

View File

@ -1898,8 +1898,8 @@ void evas_object_pixels_get_force(Evas_Object *eo_obj, Evas_Object_Protected_Dat
// Gesture Manager
void *_efl_canvas_gesture_manager_private_data_get(Eo *obj);
void _efl_canvas_gesture_manager_filter_event(Eo *gesture_manager, Eo *target, void *event);
void _efl_canvas_gesture_manager_callback_del_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type);
void _efl_canvas_gesture_manager_callback_add_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type);
void _efl_canvas_gesture_manager_callback_del_hook(void *data, Eo *target, const Efl_Event_Description *type);
void _efl_canvas_gesture_manager_callback_add_hook(void *data, Eo *target, const Efl_Event_Description *type);
//evas focus functions
void evas_focus_init(void);