fix(fragment): memory leak of fragments #3438 (#3442)

This commit is contained in:
Mariotaku
2022-07-04 19:48:27 +09:00
committed by GitHub
parent d43f10a180
commit a1326dc31a
3 changed files with 39 additions and 15 deletions

View File

@@ -14,6 +14,8 @@ static void sample_push_click(lv_event_t * e);
static void sample_pop_click(lv_event_t * e);
static void sample_container_del(lv_event_t * e);
static void sample_fragment_inc_click(lv_event_t * e);
typedef struct sample_fragment_t {
@@ -54,6 +56,9 @@ void lv_example_fragment_2(void)
lv_obj_set_grid_cell(pop_btn, LV_GRID_ALIGN_END, 1, 1, LV_GRID_ALIGN_CENTER, 1, 1);
lv_fragment_manager_t * manager = lv_fragment_manager_create(NULL);
/* Clean up the fragment manager before objects in containers got deleted */
lv_obj_add_event_cb(root, sample_container_del, LV_EVENT_DELETE, manager);
int depth = 0;
lv_fragment_t * fragment = lv_fragment_create(&sample_cls, &depth);
lv_fragment_manager_push(manager, fragment, &container);
@@ -106,6 +111,12 @@ static void sample_pop_click(lv_event_t * e)
lv_fragment_manager_pop(manager);
}
static void sample_container_del(lv_event_t * e)
{
lv_fragment_manager_t * manager = (lv_fragment_manager_t *) lv_event_get_user_data(e);
lv_fragment_manager_del(manager);
}
static void sample_fragment_inc_click(lv_event_t * e)
{
sample_fragment_t * fragment = (sample_fragment_t *) lv_event_get_user_data(e);