static void gtb_inactive(glw_text_bitmap_t *gtb) { glw_tex_destroy(gtb->w.glw_root, >b->gtb_texture); // Make sure it is rerendered once we get back to life if(gtb->gtb_state == GTB_VALID) gtb->gtb_state = GTB_NEED_RENDER; }
static void glw_gradient_dtor(glw_t *w) { glw_gradient_t *gg = (void *)w; int i; for(i = 0; i < gg->gg_tex_uploaded; i++) glw_tex_destroy(w->glw_root, &gg->gg_tex[i]); glw_renderer_free(&gg->gg_gr[i]); }
static void glw_text_bitmap_dtor(glw_t *w) { glw_text_bitmap_t *gtb = (void *)w; glw_root_t *gr = w->glw_root; free(gtb->gtb_description); free(gtb->gtb_caption); free(gtb->gtb_uc_buffer); rstr_release(gtb->gtb_font); image_release(gtb->gtb_image); LIST_REMOVE(gtb, gtb_global_link); glw_tex_destroy(w->glw_root, >b->gtb_texture); glw_renderer_free(>b->gtb_text_renderer); glw_renderer_free(>b->gtb_cursor_renderer); glw_renderer_free(>b->gtb_background_renderer); switch(gtb->gtb_state) { case GTB_IDLE: case GTB_DIMENSIONING: case GTB_NEED_RENDER: case GTB_RENDERING: case GTB_VALID: break; case GTB_QUEUED_FOR_DIMENSIONING: TAILQ_REMOVE(&gr->gr_gtb_dim_queue, gtb, gtb_workq_link); break; case GTB_QUEUED_FOR_RENDERING: TAILQ_REMOVE(&gr->gr_gtb_render_queue, gtb, gtb_workq_link); break; } }