bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2477dfaf59413a608194840756c9280d241ce76e

commit 2477dfaf59413a608194840756c9280d241ce76e
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Thu Oct 10 13:49:45 2019 -0400

    edje: selectively inhibit content,changed events when changing swallowed 
parts
    
    ref T8321
    
    Reviewed-by: Marcel Hollerbach <m...@marcel-hollerbach.de>
    Differential Revision: https://phab.enlightenment.org/D10508
---
 src/lib/edje/edje_private.h | 1 +
 src/lib/edje/edje_smart.c   | 8 ++++++++
 src/lib/edje/edje_util.c    | 3 ++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 6893dd36df..b752d09dd2 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -1803,6 +1803,7 @@ struct _Edje
    Eina_Bool          canvas_animator : 1;
    Eina_Bool          has_state_clip : 1;
    Eina_Bool          has_recalc_event_cb : 1;
+   Eina_Bool          has_content_change_event_cb : 1;
 };
 
 struct _Edje_Calc_Params_Map
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index ff023f8cb7..f8d42d9069 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -608,6 +608,10 @@ 
_efl_canvas_layout_efl_object_event_callback_priority_add(Eo *obj, Edje *pd, con
     {
        pd->has_recalc_event_cb = EINA_TRUE;
     }
+  else if (desc == EFL_CONTENT_EVENT_CONTENT_CHANGED)
+    {
+       pd->has_content_change_event_cb = EINA_TRUE;
+    }
 
   return efl_event_callback_priority_add(efl_super(obj, MY_CLASS), desc, 
priority, func, user_data);
 }
@@ -621,6 +625,10 @@ 
_efl_canvas_layout_efl_object_event_callback_array_priority_add(Eo *obj, Edje *p
           {
              pd->has_recalc_event_cb = EINA_TRUE;
           }
+        else if (array[i].desc == EFL_CONTENT_EVENT_CONTENT_CHANGED)
+          {
+             pd->has_content_change_event_cb = EINA_TRUE;
+          }
      }
    return efl_event_callback_array_priority_add(efl_super(obj, MY_CLASS), 
array, priority, user_data);
 }
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c
index 450015f8d6..38de6f3c3f 100644
--- a/src/lib/edje/edje_util.c
+++ b/src/lib/edje/edje_util.c
@@ -3088,7 +3088,8 @@ _edje_efl_content_content_set(Edje *ed, const char *part, 
Efl_Gfx_Entity *obj_sw
              eud->u.swallow.child = obj_swallow;
           }
      }
-   efl_event_callback_call(ed->obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, 
obj_swallow);
+   if (ed->has_content_change_event_cb)
+     efl_event_callback_call(ed->obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, 
obj_swallow);
    return EINA_TRUE;
 }
 

-- 


Reply via email to