mirror of https://github.com/bjornbytes/lovr.git
Fix Model memory leaks;
This commit is contained in:
parent
42c1047b88
commit
3c2fc33f1c
|
@ -54,6 +54,8 @@ static void visitNode(ModelData* modelData, ModelNode* node, mat4 transform, vec
|
|||
for (int c = 0; c < node->children.length; c++) {
|
||||
visitNode(modelData, node->children.data[c], newTransform, vertices, indices);
|
||||
}
|
||||
|
||||
mat4_deinit(newTransform);
|
||||
}
|
||||
|
||||
Model* lovrModelCreate(void* data, int size) {
|
||||
|
@ -90,6 +92,7 @@ Model* lovrModelCreate(void* data, int size) {
|
|||
|
||||
model->texture = NULL;
|
||||
|
||||
vec_deinit(&format);
|
||||
vec_deinit(&vertices);
|
||||
vec_deinit(&indices);
|
||||
return model;
|
||||
|
|
|
@ -18,6 +18,8 @@ Model* luax_checkmodel(lua_State* L, int index) {
|
|||
}
|
||||
|
||||
int luax_destroymodel(lua_State* L) {
|
||||
Model* model = luax_checkmodel(L, 1);
|
||||
lovrModelDestroy(model);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,7 @@ void lovrModelDataDestroy(ModelData* modelData) {
|
|||
|
||||
vec_deinit(&mesh->faces);
|
||||
vec_deinit(&mesh->vertices);
|
||||
vec_deinit(&mesh->normals);
|
||||
free(mesh);
|
||||
}
|
||||
|
||||
|
@ -115,8 +116,10 @@ void lovrModelDataDestroy(ModelData* modelData) {
|
|||
vec_deinit(&node->meshes);
|
||||
vec_deinit(&node->children);
|
||||
vec_splice(&nodes, 0, 1);
|
||||
free(node);
|
||||
}
|
||||
|
||||
vec_deinit(&modelData->meshes);
|
||||
vec_deinit(&nodes);
|
||||
free(modelData);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue