static void fz_drop_id_context(fz_context *ctx) { if (!ctx) return; if (fz_drop_imp(ctx, ctx->id, &ctx->id->refs)) fz_free(ctx, ctx->id); }
static void fz_drop_tuning_context(fz_context *ctx) { if (!ctx) return; if (fz_drop_imp(ctx, ctx->tuning, &ctx->tuning->refs)) { fz_free(ctx, ctx->tuning); } }
static void fz_drop_image_key(fz_context *ctx, void *key_) { fz_image_key *key = (fz_image_key *)key_; if (fz_drop_imp(ctx, key, &key->refs)) { fz_drop_image(ctx, key->image); fz_free(ctx, key); } }
void fz_drop_colorspace_context(fz_context *ctx) { if (!ctx) return; if (fz_drop_imp(ctx, ctx->colorspace, &ctx->colorspace->ctx_refs)) { fz_free(ctx, ctx->colorspace); ctx->colorspace = NULL; } }
static void fz_drop_style_context(fz_context *ctx) { if (!ctx) return; if (fz_drop_imp(ctx, ctx->style, &ctx->style->refs)) { fz_free(ctx, ctx->style->user_css); fz_free(ctx, ctx->style); } }
void fz_drop_stream(fz_context *ctx, fz_stream *stm) { if (fz_drop_imp(ctx, stm, &stm->refs)) { if (stm->drop) stm->drop(ctx, stm->state); fz_free(ctx, stm); } }
void fz_drop_output_context(fz_context *ctx) { if (!ctx || !ctx->output) return; if (fz_drop_imp(ctx, ctx->output, &ctx->output->refs)) { /* FIXME: should we flush here? closing the streams seems wrong */ fz_free(ctx, ctx->output); ctx->output = NULL; } }
void fz_drop_outline(fz_context *ctx, fz_outline *outline) { while (fz_drop_imp(ctx, outline, &outline->refs)) { fz_outline *next = outline->next; fz_drop_outline(ctx, outline->down); fz_free(ctx, outline->title); fz_free(ctx, outline->uri); fz_free(ctx, outline); outline = next; } }
void fz_drop_device(fz_context *ctx, fz_device *dev) { if (fz_drop_imp(ctx, dev, &dev->refs)) { if (dev->close_device) fz_warn(ctx, "dropping unclosed device"); if (dev->drop_device) dev->drop_device(ctx, dev); fz_free(ctx, dev->container); fz_free(ctx, dev); } }
void fz_drop_text(fz_context *ctx, fz_text *text) { if (fz_drop_imp(ctx, text, &text->refs)) { fz_text_span *span = text->head; while (span) { fz_text_span *next = span->next; fz_drop_font(ctx, span->font); fz_free(ctx, span->items); fz_free(ctx, span); span = next; } fz_free(ctx, text); } }
void fz_drop_text(fz_context *ctx, const fz_text *textc) { fz_text *text = (fz_text *)textc; /* Explicit cast away of const */ if (fz_drop_imp(ctx, text, &text->refs)) { fz_text_span *span = text->head; while (span) { fz_text_span *next = span->next; fz_drop_font(ctx, span->font); fz_free(ctx, span->items); fz_free(ctx, span); span = next; } fz_free(ctx, text); } }
void fz_drop_output_context(fz_context *ctx) { if (!ctx) return; if (fz_drop_imp(ctx, ctx->output, &ctx->output->refs)) { fz_try(ctx) fz_flush_output(ctx, ctx->output->out); fz_catch(ctx) fz_warn(ctx, "cannot flush stdout"); fz_drop_output(ctx, ctx->output->out); fz_try(ctx) fz_flush_output(ctx, ctx->output->err); fz_catch(ctx) fz_warn(ctx, "cannot flush stderr"); fz_drop_output(ctx, ctx->output->err); fz_free(ctx, ctx->output); ctx->output = NULL; } }
void fz_drop_storable(fz_context *ctx, const fz_storable *sc) { fz_storable *s = (fz_storable *)sc; if (fz_drop_imp(ctx, s, &s->refs)) s->drop(ctx, s); }