-/* $Id: t_context.c,v 1.16 2001/03/19 02:25:36 keithw Exp $ */
+/* $Id: t_context.c,v 1.17 2001/05/09 13:53:36 keithw Exp $ */
/*
* Mesa 3-D graphics library
{
TNLcontext *tnl = TNL_CONTEXT(ctx);
-/* _tnl_dlist_destroy( ctx ); */
_tnl_array_destroy( ctx );
_tnl_imm_destroy( ctx );
-/* _tnl_eval_destroy( ctx ); */
_tnl_destroy_pipeline( ctx );
FREE(tnl);
-/* $Id: t_imm_alloc.c,v 1.7 2001/04/30 21:08:52 keithw Exp $ */
+/* $Id: t_imm_alloc.c,v 1.8 2001/05/09 13:53:36 keithw Exp $ */
/*
* Mesa 3-D graphics library
return real_alloc_immediate( ctx );
}
+/* May be called after tnl is destroyed.
+ */
void _tnl_free_immediate( struct immediate *IM )
{
TNLcontext *tnl = TNL_CONTEXT(IM->backref);
ASSERT(IM->ref_count == 0);
- if (tnl->freed_immediate)
- real_free_immediate( tnl->freed_immediate );
-
- tnl->freed_immediate = IM;
+ if (!tnl) {
+ real_free_immediate( IM );
+ }
+ else {
+ if (tnl->freed_immediate)
+ real_free_immediate( tnl->freed_immediate );
+
+ tnl->freed_immediate = IM;
+ }
}
-/* $Id: t_imm_exec.c,v 1.21 2001/05/03 16:49:27 keithw Exp $ */
+/* $Id: t_imm_exec.c,v 1.22 2001/05/09 13:53:36 keithw Exp $ */
/*
* Mesa 3-D graphics library
{
if (TNL_CURRENT_IM(ctx)) {
TNL_CURRENT_IM(ctx)->ref_count--;
- _tnl_free_immediate( TNL_CURRENT_IM(ctx) );
+ if (TNL_CURRENT_IM(ctx)->ref_count == 0)
+ _tnl_free_immediate( TNL_CURRENT_IM(ctx) );
SET_IMMEDIATE(ctx, 0);
}
}