fix(gltf): fix memory leaks caused by incomplete resource cleanup (#9579)

Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
This commit is contained in:
VIFEX
2026-01-12 19:03:12 +08:00
committed by GitHub
parent a0b99c7e52
commit b7c51fb5b7
2 changed files with 17 additions and 0 deletions
+16
View File
@@ -92,6 +92,22 @@ void lv_gltf_data_delete(lv_gltf_model_t * data)
lv_gltf_model_node_t * node = (lv_gltf_model_node_t *) lv_array_at(&data->nodes, i);
lv_gltf_model_node_deinit(node);
}
lv_array_deinit(&data->nodes);
lv_array_deinit(&data->compiled_shaders);
/* Explicitly call destructors for C++ objects initialized with placement new */
data->textures.~vector();
data->meshes.~vector();
data->node_by_light_index.~vector();
data->local_mesh_to_center_points_by_primitive.~map();
data->skin_tex.~vector();
data->validated_skins.~vector();
data->blended_nodes_by_material_index.~map();
data->opaque_nodes_by_material_index.~map();
data->node_transform_cache.~map();
data->channel_set_cache.~map();
data->asset.~Asset();
lv_free(data);
}
+1
View File
@@ -682,6 +682,7 @@ static void lv_gltf_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
for(size_t i = 0; i < n; ++i) {
lv_gltf_data_delete(*(lv_gltf_model_t **)lv_array_at(&view->models, i));
}
lv_array_deinit(&view->models);
if(view->environment && view->owns_environment) {
lv_gltf_environment_delete(view->environment);
}