implement full reference counting for vertex/fragment programs
Use _mesa_reference_vert/fragprog() wherever we assign program pointers. Fixes a memory corruption bug found with glean/api2 test.
This commit is contained in:
@@ -86,6 +86,28 @@ _mesa_delete_program(GLcontext *ctx, struct gl_program *prog);
|
||||
extern struct gl_program *
|
||||
_mesa_lookup_program(GLcontext *ctx, GLuint id);
|
||||
|
||||
extern void
|
||||
_mesa_reference_program(GLcontext *ctx,
|
||||
struct gl_program **ptr,
|
||||
struct gl_program *prog);
|
||||
|
||||
static INLINE void
|
||||
_mesa_reference_vertprog(GLcontext *ctx,
|
||||
struct gl_vertex_program **ptr,
|
||||
struct gl_vertex_program *prog)
|
||||
{
|
||||
_mesa_reference_program(ctx, (struct gl_program **) ptr,
|
||||
(struct gl_program *) prog);
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
_mesa_reference_fragprog(GLcontext *ctx,
|
||||
struct gl_fragment_program **ptr,
|
||||
struct gl_fragment_program *prog)
|
||||
{
|
||||
_mesa_reference_program(ctx, (struct gl_program **) ptr,
|
||||
(struct gl_program *) prog);
|
||||
}
|
||||
|
||||
extern struct gl_program *
|
||||
_mesa_clone_program(GLcontext *ctx, const struct gl_program *prog);
|
||||
|
Reference in New Issue
Block a user