ref: properly handle unloading sprites that aren't loaded completely
This commit is contained in:
parent
719093c10b
commit
b554d7e215
2 changed files with 42 additions and 44 deletions
|
@ -249,32 +249,31 @@ release sprite model and frames
|
||||||
*/
|
*/
|
||||||
void Mod_SpriteUnloadTextures( void *data )
|
void Mod_SpriteUnloadTextures( void *data )
|
||||||
{
|
{
|
||||||
msprite_t *psprite;
|
msprite_t *psprite = data;
|
||||||
mspritegroup_t *pspritegroup;
|
int i;
|
||||||
mspriteframe_t *pspriteframe;
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
psprite = data;
|
if( !data )
|
||||||
|
return;
|
||||||
|
|
||||||
if( psprite )
|
// release all textures
|
||||||
|
for( i = 0; i < psprite->numframes; i++ )
|
||||||
{
|
{
|
||||||
// release all textures
|
if( !psprite->frames[i].frameptr )
|
||||||
for( i = 0; i < psprite->numframes; i++ )
|
continue;
|
||||||
{
|
|
||||||
if( psprite->frames[i].type == SPR_SINGLE )
|
|
||||||
{
|
|
||||||
pspriteframe = psprite->frames[i].frameptr;
|
|
||||||
GL_FreeTexture( pspriteframe->gl_texturenum );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pspritegroup = (mspritegroup_t *)psprite->frames[i].frameptr;
|
|
||||||
|
|
||||||
for( j = 0; j < pspritegroup->numframes; j++ )
|
if( psprite->frames[i].type == SPR_SINGLE )
|
||||||
{
|
{
|
||||||
pspriteframe = pspritegroup->frames[i];
|
GL_FreeTexture( psprite->frames[i].frameptr->gl_texturenum );
|
||||||
GL_FreeTexture( pspriteframe->gl_texturenum );
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
mspritegroup_t *pspritegroup = (mspritegroup_t *)psprite->frames[i].frameptr;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for( j = 0; j < pspritegroup->numframes; j++ )
|
||||||
|
{
|
||||||
|
if( pspritegroup->frames[j] )
|
||||||
|
GL_FreeTexture( pspritegroup->frames[j]->gl_texturenum );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -237,32 +237,31 @@ release sprite model and frames
|
||||||
*/
|
*/
|
||||||
void Mod_SpriteUnloadTextures( void *data )
|
void Mod_SpriteUnloadTextures( void *data )
|
||||||
{
|
{
|
||||||
msprite_t *psprite;
|
msprite_t *psprite = data;
|
||||||
mspritegroup_t *pspritegroup;
|
int i;
|
||||||
mspriteframe_t *pspriteframe;
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
psprite = data;
|
if( !data )
|
||||||
|
return;
|
||||||
|
|
||||||
if( psprite )
|
// release all textures
|
||||||
|
for( i = 0; i < psprite->numframes; i++ )
|
||||||
{
|
{
|
||||||
// release all textures
|
if( !psprite->frames[i].frameptr )
|
||||||
for( i = 0; i < psprite->numframes; i++ )
|
continue;
|
||||||
{
|
|
||||||
if( psprite->frames[i].type == SPR_SINGLE )
|
|
||||||
{
|
|
||||||
pspriteframe = psprite->frames[i].frameptr;
|
|
||||||
GL_FreeTexture( pspriteframe->gl_texturenum );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pspritegroup = (mspritegroup_t *)psprite->frames[i].frameptr;
|
|
||||||
|
|
||||||
for( j = 0; j < pspritegroup->numframes; j++ )
|
if( psprite->frames[i].type == SPR_SINGLE )
|
||||||
{
|
{
|
||||||
pspriteframe = pspritegroup->frames[i];
|
GL_FreeTexture( psprite->frames[i].frameptr->gl_texturenum );
|
||||||
GL_FreeTexture( pspriteframe->gl_texturenum );
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
mspritegroup_t *pspritegroup = (mspritegroup_t *)psprite->frames[i].frameptr;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for( j = 0; j < pspritegroup->numframes; j++ )
|
||||||
|
{
|
||||||
|
if( pspritegroup->frames[j] )
|
||||||
|
GL_FreeTexture( pspritegroup->frames[j]->gl_texturenum );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue