mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 16:48:07 +02:00
fix mem leak, add comments
This commit is contained in:
parent
bb0393a0cd
commit
b9fbedd601
1 changed files with 15 additions and 3 deletions
|
|
@ -67,6 +67,10 @@ _mesa_new_shader_program(GLcontext *ctx, GLuint name)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Free the data that hangs off a shader program object, but not the object
|
||||
* itself.
|
||||
*/
|
||||
void
|
||||
_mesa_free_shader_program_data(GLcontext *ctx,
|
||||
struct gl_shader_program *shProg)
|
||||
|
|
@ -104,11 +108,17 @@ _mesa_free_shader_program_data(GLcontext *ctx,
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Free/delete a shader program object.
|
||||
*/
|
||||
void
|
||||
_mesa_free_shader_program(GLcontext *ctx, struct gl_shader_program *shProg)
|
||||
{
|
||||
_mesa_free_shader_program_data(ctx, shProg);
|
||||
if (shProg->Shaders) {
|
||||
_mesa_free(shProg->Shaders);
|
||||
shProg->Shaders = NULL;
|
||||
}
|
||||
_mesa_free(shProg);
|
||||
}
|
||||
|
||||
|
|
@ -431,6 +441,10 @@ _mesa_detach_shader(GLcontext *ctx, GLuint program, GLuint shader)
|
|||
/* found it */
|
||||
|
||||
shProg->Shaders[i]->RefCount--;
|
||||
if (shProg->Shaders[i]->RefCount == 0) {
|
||||
/* delete now */
|
||||
_mesa_free_shader(ctx, shProg->Shaders[i]);
|
||||
}
|
||||
|
||||
/* alloc new, smaller array */
|
||||
newList = (struct gl_shader **)
|
||||
|
|
@ -446,8 +460,6 @@ _mesa_detach_shader(GLcontext *ctx, GLuint program, GLuint shader)
|
|||
newList[j++] = shProg->Shaders[i];
|
||||
_mesa_free(shProg->Shaders);
|
||||
|
||||
/* XXX refcounting! */
|
||||
|
||||
shProg->Shaders = newList;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue