I need some more clarity regarding the implementation.
I’ve read that in direct mode, LVGL first redraws all the dirty areas in the screen-sized buffer and then calls the flush function, then in that case what is the meaning of checking lv_disp_flush_is_last(drv) == true
because only 1 chunk is being flushed right? (Q1)
Let’s say we have FB1 and FB2 and currently FB1 is active and flush_cb is called, we have to do 2 tasks. 1st copy the invalidated areas from FB1 to FB2 and 2nd, flush the unioned invalidated of FB1 to the screen.
Q2 Can you please comment on the ordering of the 2 tasks?
Q3 How will the FB2 become active for the next rendering? will LVGL internally take care of it or, do I have to do it some way in flush_cb()? If later then please suggest how?
Q4. If suppose, a rendering request comes while we are busy with the first task 1. in flush_cb then how it will be handled, please comment.