I locate issue to flushcb and DMA and method how lvgl 8.3 draw.
I repeat test on GFX library without DMA (more as half slower) and issue dont show on 8.3
With lowyan i use lgfx::Bus_Parallel8 _bus_instance;
Do you see the issue you use only one display? I suspect that the problem is lurking somewhere in the two display management in the flush_cb. However, in this case it shouldn’t have worked with v8.2.
Project work in 8.1 and 8.2 too, and this issue dont happen, but yes in this versions occurs simmilar trouble on other place and curiously on other display. But here i men not with hide, but with set parent calls.
LVGL part of bug is that calling set changes on invisible objects invoke flush_cb. You can test Hide bar aside other object and call update random value into bar .
LVGL should ingnore the invalidation of hidden objects.
See
No as i write on git, on hide unhide change parrents lvgl start big refresh, but code send changes to other objects (irelevant visible or not) flush is called for this changes in the middle or on other speed as big refresh and this seems corrupt DMA sequencing.
Yes this may help, but i continue testing and see, that
My config two display 320x240 aranged as one x480
Panels SLS created over displays 320x240
In panels as parrent placed gui
Hide panel produce bigger arrea refresh = primary problem Hide on display 2 produce first flush y 235-264 maybe shadows (not used)
This result into split flush on DMA corrupt
Now i ignore first 5 lines for disp 1, because real update is disp2 and all works.
Exist some setting for limit flush expand on some object? First flush need y1=240 if somethink changed on disp2