void VGContext_dtor(VGContext *c) { int i; SH_DEINITOBJ(SHRectArray, c->scissor); SH_DEINITOBJ(SHFloatArray, c->strokeDashPattern); /* Destroy resources */ for (i=0; i<c->paths.size; ++i) SH_DELETEOBJ(SHPath, c->paths.items[i]); for (i=0; i<c->paints.size; ++i) SH_DELETEOBJ(SHPaint, c->paints.items[i]); for (i=0; i<c->images.size; ++i) SH_DELETEOBJ(SHImage, c->images.items[i]); }
VG_API_CALL void vgDestroyContextSH() { /* return if already released */ if (!g_context) return; /* delete context object */ SH_DELETEOBJ(VGContext, g_context); g_context = NULL; }
VG_API_CALL void vgDestroyPaint(VGPaint paint) { SHint index; VG_GETCONTEXT(VG_NO_RETVAL); /* Check if handle valid */ index = shPaintArrayFind(&context->paints, (SHPaint*)paint); VG_RETURN_ERR_IF(index == -1, VG_BAD_HANDLE_ERROR, VG_NO_RETVAL); /* Delete object and remove resource */ SH_DELETEOBJ(SHPaint, (SHPaint*)paint); shPaintArrayRemoveAt(&context->paints, index); VG_RETURN(VG_NO_RETVAL); }