Thanks again. Indeed, that seems to work and it can also be used to restore the original pointer. A single complete frame can thus be catched with this:
def my_flush(drv, area, buf):
print("Area:", area.x1, area.x2, area.y1, area.y2);
espidf.ili9xxx_flush(drv, area, buf)
# drv.flush_ready() # use this if you don't need the screen update itself
lv.scr_act().get_disp().driver.flush_cb = my_flush;
lv.scr_act().invalidate()
lv.refr_now(lv.disp_get_default())
lv.scr_act().get_disp().driver.flush_cb = espidf.ili9xxx_flush
The result is exactly one time the screen memory:
Area: 0 239 0 79
Area: 0 239 80 159
Area: 0 239 160 239
Area: 0 239 240 319
Now let’s see how fast this is and if I can build some kind of low FPS remote live view from this.