[Same story as the patch I just sent a minute ago, really]
This memory leak is identical to the earlier one in texenvprogram.
Fixed by not creating an additional reference to new programs in cache_item.
On top of that, remove some duplicated state setting.
---
src/mesa/tnl/t_vp_build.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c
index 46446d4..d79f84f 100644
--- a/src/mesa/tnl/t_vp_build.c
+++ b/src/mesa/tnl/t_vp_build.c
@@ -1511,7 +1511,8 @@ static void cache_item( GLcontext *ctx,
struct tnl_cache_item *c = CALLOC_STRUCT(tnl_cache_item);
c->hash = hash;
c->key = key;
- _mesa_reference_vertprog(ctx, &c->prog, prog);
+
+ c->prog = prog;
if (++cache->n_items > cache->size * 1.5)
rehash(cache);
@@ -1569,9 +1570,8 @@ void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx )
ctx->Driver.ProgramStringNotify( ctx, GL_VERTEX_PROGRAM_ARB,
&newProg->Base );
+ /* Our ownership of newProg is transferred to the cache */
cache_item(ctx, tnl->vp_cache, hash, key, newProg);
-
- _mesa_reference_vertprog(ctx, &ctx->VertexProgram._TnlProgram,
newProg);
}
else {
FREE(key);
--
1.5.4.3
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev