Answering my own questions and hopefully helping someone in the process.
I managed to get everything working with the new version given the updated examples:
In v7 every platform had its own event loop. We had lvstm32 for stm32, lvesp32 for esp32, etc.
On v8 we replaced all of these with a single platform-independent event loop, as discussed in this GitHub issue.
It has several advantages:
Same event loop implementation for all platforms
Event loop is configurable - you can set refresh frequency and some other parameters
Supports both timer-based event loop and uasyncio event loop
Solved some bugs with MP scheduler oversubscription
To use it for the simplest use case, you just create an instance of the event loop:
from lv_utils import event_loop
...
self.event_loop = event_loop()
Make sure you keep a reference to the event loop, to prevent it from being garbage-collected.
Great info, thank you for these pointers. I’m so happy I came accross this library.
It’s powerfull and the micropython integration with uasyncio is just fantastic.