bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b9e0d25a4c44cbeae5e2a18380113181281c9f3e
commit b9e0d25a4c44cbeae5e2a18380113181281c9f3e Author: Cedric BAIL <cedric.b...@free.fr> Date: Fri Nov 15 10:55:09 2019 -0800 elementary: reduce event generation during object creation by Efl.Ui.WidgetFactory. We can not freeze the canvas in all scenario as we are sometime building widget fully asynchronously which prevent holding events on the canvas. Still it is better to do it for the case we can. Reviewed-by: SangHyeon Jade Lee <sh10233....@samsung.com> Reviewed-by: Marcel Hollerbach <m...@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10685 --- src/lib/elementary/efl_ui_widget_factory.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_widget_factory.c b/src/lib/elementary/efl_ui_widget_factory.c index 5ab9477a85..43c9d27c5e 100644 --- a/src/lib/elementary/efl_ui_widget_factory.c +++ b/src/lib/elementary/efl_ui_widget_factory.c @@ -279,6 +279,10 @@ _efl_ui_widget_factory_efl_ui_factory_create(Eo *obj, Efl_Ui_Widget_Factory_Data { Efl_Ui_Widget *w = NULL; Eina_Value r; + Evas *e; + + e = evas_object_evas_get(obj); + evas_event_freeze(e); eina_value_array_setup(&r, EINA_VALUE_TYPE_OBJECT, 4); @@ -286,11 +290,19 @@ _efl_ui_widget_factory_efl_ui_factory_create(Eo *obj, Efl_Ui_Widget_Factory_Data { w = _efl_ui_widget_create(obj, pd->klass, pd->parenting_widget, model); - if (!w) return efl_loop_future_rejected(obj, ENOMEM); + if (!w) + { + evas_event_thaw(e); + evas_event_thaw_eval(e); + return efl_loop_future_rejected(obj, ENOMEM); + } eina_value_array_append(&r, w); } eina_iterator_free(models); + evas_event_thaw(e); + evas_event_thaw_eval(e); + return efl_loop_future_resolved(obj, r); } --