bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8331ea048cfafd7afc007456d7b38209e862c3b0
commit 8331ea048cfafd7afc007456d7b38209e862c3b0 Author: Cedric BAIL <cedric.b...@free.fr> Date: Fri Nov 15 11:19:28 2019 -0800 elementary: improve data layout for Efl.Ui.PositionManager*. Reviewed-by: SangHyeon Jade Lee <sh10233....@samsung.com> Reviewed-by: Marcel Hollerbach <m...@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10688 --- src/lib/elementary/efl_ui_position_manager_grid.c | 31 +++++++++++++---------- src/lib/elementary/efl_ui_position_manager_list.c | 19 +++++++++----- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/lib/elementary/efl_ui_position_manager_grid.c b/src/lib/elementary/efl_ui_position_manager_grid.c index 949cd66e26..2cec569d44 100644 --- a/src/lib/elementary/efl_ui_position_manager_grid.c +++ b/src/lib/elementary/efl_ui_position_manager_grid.c @@ -13,32 +13,37 @@ Efl_Ui_Position_Manager_Grid_Data *pd = efl_data_scope_get(obj, MY_CLASS); typedef struct { - unsigned int size; - unsigned int groups; + Api_Callbacks callbacks; + + Eina_Inarray *group_cache; + int *size_cache; + Eo *last_group; + Eina_Future *rebuild_absolut_size; + Efl_Ui_Win *window; + Evas *canvas; + + Vis_Segment prev_run; + Eina_Rect viewport; Eina_Vector2 scroll_position; - Efl_Ui_Layout_Orientation dir; - Vis_Segment prev_run; - unsigned int prev_consumed_space; Eina_Size2D max_min_size; Eina_Size2D last_viewport_size; Eina_Size2D prev_min_size; - Eina_Inarray *group_cache; + Efl_Ui_Layout_Orientation dir; + + unsigned int size; + unsigned int groups; + unsigned int prev_consumed_space; + Eina_Bool group_cache_dirty; - int *size_cache; Eina_Bool size_cache_dirty; - Eo *last_group; - Eina_Future *rebuild_absolut_size; - Efl_Ui_Win *window; - Evas *canvas; - Api_Callbacks callbacks; } Efl_Ui_Position_Manager_Grid_Data; typedef struct { - Eina_Bool real_group; Eina_Size2D group_header_size; int items; + Eina_Bool real_group; } Group_Cache_Line; static inline void diff --git a/src/lib/elementary/efl_ui_position_manager_list.c b/src/lib/elementary/efl_ui_position_manager_list.c index bd9dd95a08..3980e127ef 100644 --- a/src/lib/elementary/efl_ui_position_manager_list.c +++ b/src/lib/elementary/efl_ui_position_manager_list.c @@ -14,20 +14,25 @@ Efl_Ui_Position_Manager_List_Data *pd = efl_data_scope_get(obj, MY_CLASS); typedef struct { - unsigned int size; + Api_Callbacks callbacks; + Eina_Future *rebuild_absolut_size; + int *size_cache; + Efl_Gfx_Entity *last_group; + Efl_Ui_Win *window; + Evas *canvas; + + Vis_Segment prev_run; + Eina_Rect viewport; Eina_Size2D abs_size; Eina_Vector2 scroll_position; + Efl_Ui_Layout_Orientation dir; - int *size_cache; + + unsigned int size; int average_item_size; int maximum_min_size; - Vis_Segment prev_run; - Efl_Gfx_Entity *last_group; - Efl_Ui_Win *window; - Evas *canvas; - Api_Callbacks callbacks; } Efl_Ui_Position_Manager_List_Data; /* --