Page MenuHomePhabricator

genlist: fix broken item orders on filter processing.
Needs ReviewPublic

Authored by SanghyeonLee on Feb 10 2022, 2:19 AM.

Details

Reviewers
cedric
raster
Summary

when using filter and adding items,
filtered_get processing item will cause item order errors by adding
late ordered item into the prev block before adding prev ordered item.

normally items are internally processed by queue_process(),
order of sd->queue list, and will be added into the blocks.

N-th item -> M-th block
(N+1)-th item -> (M+1)-th block

but when using filter,
item_filtered_get() want processing item regardless of queuing orders,
so (N+1)-th item is added in M-th block before N-th item is processing.

(N+1)-th item -> M-th block
N-th item -> (M+1)-th block

if block is fulled, N-th item need to be added in (M+1)-th block and this will occur miss ordering issue.

so when it need to be processed,
all pre-exist queuing items must be processed in order.

Diff Detail

Repository
rEFL core/efl
Branch
master
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 17584
Build 11846: arc lint + arc unit
SanghyeonLee created this revision.Feb 10 2022, 2:19 AM
SanghyeonLee requested review of this revision.Feb 10 2022, 2:19 AM
godlytalias added inline comments.
src/lib/elementary/elm_genlist.c
7936

Won't this block the UI if list size is big, don't we have to break if processing takes more than ecore_animator_frametime_get value?