From 23284536b5ef46100b644b89fc69f757b18e7158 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 16 May 2012 18:09:44 +0900 Subject: [PATCH] Move IQM freeing into common code. --- include/mod_internal.h | 2 ++ libs/models/iqm/glsl_model_iqm.c | 15 +-------------- libs/models/iqm/model_iqm.c | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/include/mod_internal.h b/include/mod_internal.h index f4e3f9f4b..434894bc3 100644 --- a/include/mod_internal.h +++ b/include/mod_internal.h @@ -1,6 +1,7 @@ #ifndef __mod_internal_h #define __mod_internal_h +#include "QF/iqm.h" #include "QF/model.h" #include "QF/skin.h" #include "QF/plugin/vid_render.h" @@ -51,6 +52,7 @@ void glsl_Mod_SpriteLoadTexture (mspriteframe_t *pspriteframe, int framenum); void sw_Mod_SpriteLoadTexture (mspriteframe_t *pspriteframe, int framenum); void Mod_LoadIQM (model_t *mod, void *buffer); +void Mod_FreeIQM (iqm_t *iqm); void Mod_LoadAliasModel (model_t *mod, void *buffer, cache_allocator_t allocator); void Mod_LoadSpriteModel (model_t *mod, void *buffer); diff --git a/libs/models/iqm/glsl_model_iqm.c b/libs/models/iqm/glsl_model_iqm.c index 0f68f4b99..5e1a26030 100644 --- a/libs/models/iqm/glsl_model_iqm.c +++ b/libs/models/iqm/glsl_model_iqm.c @@ -86,20 +86,7 @@ glsl_iqm_clear (model_t *mod) GLSL_ReleaseTexture (glsl->normmaps[i]); } free (glsl); - free (iqm->text); - if (iqm->vertices) - free (iqm->vertices); - free (iqm->vertexarrays); - if (iqm->elements) - free (iqm->elements); - free (iqm->meshes); - free (iqm->joints); - free (iqm->baseframe); - free (iqm->inverse_baseframe); - free (iqm->anims); - free (iqm->frames[0]); - free (iqm->frames); - free (iqm); + Mod_FreeIQM (iqm); } static void diff --git a/libs/models/iqm/model_iqm.c b/libs/models/iqm/model_iqm.c index 407e89594..f4ff29d35 100644 --- a/libs/models/iqm/model_iqm.c +++ b/libs/models/iqm/model_iqm.c @@ -523,3 +523,22 @@ Mod_LoadIQM (model_t *mod, void *buffer) Sys_Error ("%s: error loading anims", loadname); m_funcs->Mod_IQMFinish (mod); } + +void +Mod_FreeIQM (iqm_t *iqm) +{ + free (iqm->text); + if (iqm->vertices) + free (iqm->vertices); + free (iqm->vertexarrays); + if (iqm->elements) + free (iqm->elements); + free (iqm->meshes); + free (iqm->joints); + free (iqm->baseframe); + free (iqm->inverse_baseframe); + free (iqm->anims); + free (iqm->frames[0]); + free (iqm->frames); + free (iqm); +}