Fix Model memory leaks;

This commit is contained in:
bjorn 2016-11-18 02:03:50 -08:00
parent 42c1047b88
commit 3c2fc33f1c
3 changed files with 8 additions and 0 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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);
}