evas: disable del hook when pushed inside the hash.
authorCedric BAIL <cedric@osg.samsung.com>
Wed, 23 May 2018 19:15:26 +0000 (12:15 -0700)
committerWonki Kim <wonki_.kim@samsung.com>
Fri, 1 Jun 2018 03:52:12 +0000 (12:52 +0900)
This is necessary in case of cycling init/shutdown as the hash will
destroy the Event, but the hook will instantly reinsert it.

src/lib/evas/canvas/efl_input_event.c

index bf940cc..9bd5151 100644 (file)
@@ -72,6 +72,8 @@ _del_hook(Eo *evt)
    Efl_Input_Event *cached;
    const Eo *klass = efl_class_get(evt);
 
+   efl_del_intercept_set(evt, NULL);
+
    cached = eina_hash_find(_cached_events, &klass);
    if (!cached)
      {
@@ -81,7 +83,6 @@ _del_hook(Eo *evt)
      }
    else
      {
-        efl_del_intercept_set(evt, NULL);
         efl_unref(evt);
      }
 }
@@ -111,6 +112,7 @@ efl_input_event_instance_get(Eo *klass, Eo *owner)
         eina_hash_del(_cached_events, &klass, evt);
         efl_parent_set(evt, owner);
         efl_unref(evt); // Remove reference before turning on self destruction
+        efl_del_intercept_set(evt, _del_hook);
         efl_event_callback_add(evt, EFL_EVENT_NOREF, _noref_death, NULL);
      }
    else