Open X-Ryl669 opened 2 years ago
I see the same issue.
I tried to use the LVGL class functions around lv_obj_class_t
(see _lv_obj.c, lvlabel.c, etc...) to construct a C++ class. This works as long as the class doesn't use virtual functions (and has a virtual table) since LVGL assumes the position of lv_obj_t is at the first memory address (and not after the virtual function table pointer).
If you start using a lv_obj_t inside another lv_obj_t, then you have an issue. If you delete the parent, the child lv_obj_t * instance will be deleted by LVGL, but the C++ wrapper object will not.
In order to have a link between both, you need to register a
LV_EVENT_DELETE
on everylv_obj_t *
you are wrapping so you can be informed when a children is deleted too and delete the wrapper.However, this comes with a large penalty, each object now cost a wrapper + an event handler object.