Page MenuHomePhabricator

[MVVM] Efl.Ui.View_List Homogenous Support
Closed, ResolvedPublic


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.


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.
SanghyeonLee assigned this task to felipealmeida.
SanghyeonLee added a subscriber: larryolj.
cedric added a subscriber: cedric.Nov 16 2018, 11:24 AM

What is the status of this task ?

SanghyeonLee added a comment.EditedNov 27 2018, 10:32 PM

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?

zmike moved this task from Backlog to Felipe on the efl: mvvm board.Jan 9 2019, 12:26 PM
cedric claimed this task.Jan 9 2019, 7:27 PM
cedric moved this task from Felipe to Cedric on the efl: mvvm board.
cedric added a subscriber: felipealmeida.

All this patch did land and I consider this task done. Open a new task if you have any bugs or feature miss.

cedric closed this task as Resolved.Feb 11 2019, 10:41 AM