void cdKillCanvas(cdCanvas *canvas) { assert(canvas); if (!_cdCheckCanvas(canvas)) return; if (canvas == cdActiveCanvas()) cdActivate(NULL); else cdCanvasDeactivate(canvas); canvas->cxKillCanvas(canvas->ctxcanvas); if (canvas->pattern) free(canvas->pattern); if (canvas->stipple) free(canvas->stipple); if (canvas->poly) free(canvas->poly); if (canvas->clip_poly) free(canvas->clip_poly); if (canvas->fpoly) free(canvas->fpoly); if (canvas->clip_fpoly) free(canvas->clip_fpoly); if (canvas->line_dashes) free(canvas->line_dashes); if (canvas->path) free(canvas->path); cdKillVectorFont(canvas->vector_font); cdKillSimulation(canvas->simulation); memset(canvas, 0, sizeof(cdCanvas)); free(canvas); }
static void cddeactivate(cdCtxCanvas* ctxcanvas) { cdCanvas* canvas_dbuffer = ctxcanvas->canvas_dbuffer; /* this is done in the canvas_dbuffer context */ cdCanvasDeactivate(canvas_dbuffer); }