static int GGIclose(struct ggi_visual *vis, struct ggi_dlhandle *dlh) { free(LIBGGI_GC(vis)); free(SUB_PRIV(vis)); return 0; }
int GGI_sub_setflags(ggi_visual *vis,ggi_flags flags) { int rc; ggi_sub_priv *priv = SUB_PRIV(vis); rc = ggiSetFlags(priv->parent, flags); if (rc < 0) return rc; LIBGGI_FLAGS(vis) = flags; LIBGGI_FLAGS(vis) &= GGIFLAG_ASYNC; /* Unkown flags don't take. */ return 0; }
int GGI_sub_setmode(ggi_visual *vis,ggi_mode *tm) { ggi_sub_priv *subinfo = SUB_PRIV(vis); subinfo->position.x = tm->visible.x; subinfo->position.y = tm->visible.y; subinfo->botright.x = tm->virt.x + tm->visible.x; subinfo->botright.y = tm->virt.y + tm->visible.y; tm->visible=tm->virt; memcpy(LIBGGI_MODE(vis),tm,sizeof(ggi_mode)); return 0; }
int GGI_sub_flush(ggi_visual *vis, int x, int y, int w, int h, int tryflag) { ggi_sub_priv *priv = SUB_PRIV(vis); return _ggiInternFlush(priv->parent, x + priv->position.x, y + priv->position.y, w, h, tryflag); }