static void RENDER_APIENTRY renderspuDestroyContext( GLint ctx ) { ContextInfo *context, *curCtx; CRASSERT(ctx); if (ctx == CR_RENDER_DEFAULT_CONTEXT_ID) { crWarning("request to destroy a default context, ignoring"); return; } context = (ContextInfo *) crHashtableSearch(render_spu.contextTable, ctx); CRASSERT(context); { if (!context) { crWarning("request to delete inexistent context"); return; } } curCtx = GET_CONTEXT_VAL(); CRASSERT(curCtx); if (curCtx == context) { renderspuMakeCurrent( CR_RENDER_DEFAULT_WINDOW_ID, 0, CR_RENDER_DEFAULT_CONTEXT_ID ); curCtx = GET_CONTEXT_VAL(); Assert(curCtx); Assert(curCtx != context); } crHashtableDelete(render_spu.contextTable, ctx, NULL); renderspuContextMarkDeletedAndRelease(context); }
static void DeleteContextCallback( void *data ) { ContextInfo *context = (ContextInfo *) data; renderspuContextMarkDeletedAndRelease(context); }