To enhance the performance in most usage,
homogenous mode need to be supported in Efl.Ui.View_List
which means, all item have same - homogenous - item size, so first calculated item size will be preserved,
and do not repeat redundant size calculation of rest of items.
Description
Details
- Differential Revisions
- D7701: eina: refactor eina_value_*_new.
D7700: eina: refactor eina_value_*_init.
D7699: eina: refactor eina_value_*_get.
D7665: elementary: add test for Efl.Ui.Model_Average.
D7664: elementary: add a test for Efl.Ui.Model_Exact.
D7663: elementary: add a test for Efl.Ui.Model_Homogeneous.
D7662: elementary: enable efl_ui_suite tests for meson build.
D7661: elementary: add internal Efl_Ui_Model_Average.
D7660: elementary: add internal Efl_Ui_Model_Exact.
D7659: elementary: add internal Efl_Ui_Model_Homogeneous.
D7658: elementary: add internal Efl_Ui_Model_Size.
D7657: ecore: correct Efl.Model_Composite_Selection test to use the new property name.
D7656: ecore: simplify Efl.Model_Composite_Selection by relying on parent class.
D7655: ecore: simplify Efl.Model_Composite_Boolean by relying on parent class.
D7654: ecore: add an index property on Efl.Model_Composite and handle children_slice_get.
D7653: ecore: fix memory leak when shutding down the application.
D7652: eina: fix memory leak when a Eina_Value as promise is returned, but no dispatching Eina_Future is listening on it.
D7651: eina: add tests for the new Eina_Value convert functions.
D7650: eina: add Eina_Value helper that convert efficiently to a target native C type.
D7649: eina: add tests for Eina_Value utility function eina_value_*_get.
D7445: elementary: enable caching for Efl.Ui.LayoutFactory.
D7444: elementary: enable caching for Efl.Ui.ImageFactory.
D7443: elementary: add a factory that handle caching for you.
To support this, we need new factory which make in List or Grid Item not Layout, which may allow to set size manually without layout_sizing_eval.
factory could support homogeneous_size_set/get().
additionally, our genlist cache the size of items and managed the calculation result though the item is out of viewport.
so we don't need to re-calculate the size again when it comes back.
I think we might need similar kind of size caching in our listview, to optimize size calculations, if not, we need to calculate the item's size in every single scroll movement.
I don't know where we need to store this cached data, this data might be very releated with view-side so listview or factory could handles it,
but on the other hand, we could store view-related data in viewmodel, so some kind of helper may necessary.
@cedric and @felipealmeida what do you think of this?
All this patch did land and I consider this task done. Open a new task if you have any bugs or feature miss.