jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=58aa349283d19e58eadb1acb7596d6ca1f23ea8d

commit 58aa349283d19e58eadb1acb7596d6ca1f23ea8d
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Aug 10 14:17:00 2016 +0900

    widget: Optimize out one function call if not needed
---
 src/lib/elementary/elm_widget.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 52cb4e2..4145d3a 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -721,6 +721,7 @@ _propagate_event(void *data EINA_UNUSED, const Eo_Event 
*event)
       Evas_Event_Key_Up up;
       Evas_Event_Mouse_Wheel wheel;
    } event_info = {};
+   Eina_Bool was_hold;
 
    /* FIXME: Avoid this translation to evas struct and use pointer/key events
     * in all of elementary widgets */
@@ -741,6 +742,7 @@ _propagate_event(void *data EINA_UNUSED, const Eo_Event 
*event)
         event_info.down.dev = ev->device;
         type = EVAS_CALLBACK_KEY_DOWN;
         event_flags = &event_info.down.event_flags;
+        was_hold = (*event_flags & EVAS_EVENT_FLAG_ON_HOLD) != 0;
      }
    else if (event->desc == EFL_EVENT_KEY_UP)
      {
@@ -759,6 +761,7 @@ _propagate_event(void *data EINA_UNUSED, const Eo_Event 
*event)
         event_info.up.dev = ev->device;
         type = EVAS_CALLBACK_KEY_UP;
         event_flags = &event_info.up.event_flags;
+        was_hold = (*event_flags & EVAS_EVENT_FLAG_ON_HOLD) != 0;
      }
    else if (event->desc == EFL_EVENT_POINTER_WHEEL)
      {
@@ -778,12 +781,13 @@ _propagate_event(void *data EINA_UNUSED, const Eo_Event 
*event)
         event_info.wheel.dev = ev->device;
         type = EVAS_CALLBACK_MOUSE_WHEEL;
         event_flags = &event_info.wheel.event_flags;
+        was_hold = (*event_flags & EVAS_EVENT_FLAG_ON_HOLD) != 0;
      }
    else
      return;
 
    elm_widget_event_propagate(obj, type, &event_info, event_flags);
-   if (*event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+   if (!was_hold && (*event_flags & EVAS_EVENT_FLAG_ON_HOLD))
      efl_event_processed_set(event->info, EINA_TRUE);
 }
 

-- 


Reply via email to