diff -up Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texmem.c.refcount Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texmem.c --- Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texmem.c.refcount 2007-09-01 10:37:24.000000000 +0200 +++ Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texmem.c 2007-09-01 10:42:12.000000000 +0200 @@ -43,6 +43,7 @@ SOFTWARE. #include "context.h" #include "colormac.h" #include "macros.h" +#include "texobj.h" #include "simple_list.h" #include "radeon_reg.h" /* gets definition for usleep */ #include "r300_context.h" @@ -72,7 +73,8 @@ void r300DestroyTexObj(r300ContextPtr rm for (i = 0; i < rmesa->radeon.glCtx->Const.MaxTextureUnits; i++) { if (rmesa->state.texture.unit[i].texobj == t) { - rmesa->state.texture.unit[i].texobj = NULL; + MESA_REF_TEXOBJ((struct gl_texture_object **) + &rmesa->state.texture.unit[i].texobj, NULL); } } } diff -up Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texstate.c.refcount Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texstate.c --- Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texstate.c.refcount 2007-09-01 10:37:24.000000000 +0200 +++ Mesa-7.0.1/src/mesa/drivers/dri/r300/r300_texstate.c 2007-09-01 10:42:00.000000000 +0200 @@ -483,7 +483,9 @@ static GLboolean r300UpdateTexture(GLcon ~(1 << unit); } - rmesa->state.texture.unit[unit].texobj = t; + MESA_REF_TEXOBJ((struct gl_texture_object **) + &rmesa->state.texture.unit[unit].texobj, + (struct gl_texture_object *)t); t->base.bound |= (1 << unit); t->dirty_state |= 1 << unit; driUpdateTextureLRU((driTextureObject *) t); /* XXX: should be locked! */