The evas_norender updates the canvas internal objects.
But efl_ui_win does not evaluate its internal objects, when evas_norender is
called before showing, after resizing as below.
evas_object_resize(win, 300, 600); evas_norender(evas_object_evas_get(win)); evas_object_show(win);
This problem could be verified by checking if a resize function of internal
object is called or not.
minw,h is 0 in _elm_win_resize_objects_eval but deferred_resize_job is TRUE.
evas_norender -> _window_layout_stack -> _elm_win_resize_objects_eval
So if _elm_win_resize_objects_eval does not return if deferred_resize_job is
TRUE even if minw,h is 0, and calls _elm_win_resize_job, then it will work.
_elm_win_resize_objects_eval -> _elm_win_resize_job -> evas_object_geometry_set -> _efl_canvas_group_group_need_recalculate_set -> _window_layout_stack -> evas_object_geometry_set -> resize function.
I have checked this behavior without elementary. It seems that evas_norender
works between resize and show in this case. Let me share examples.
ecore_evas_resize(ee, 100, 100); evas_norender(evas); ecore_evas_show(ee);