int GGI_palemu_flush(struct ggi_visual *vis, int x, int y, int w, int h, int tryflag) { ggi_palemu_priv *priv = PALEMU_PRIV(vis); int err; MANSYNC_ignore(vis); ggLock(priv->flush_lock); if (priv->target == PALEMU_TARGET) { err = _ggi_palemu_Flush(vis); } else { err = _ggi_monotext_Flush(vis); } if (! err) { err = _ggiInternFlush(GGI_VISUAL(priv->parent), x, y, w, h, tryflag); } ggUnlock(priv->flush_lock); MANSYNC_cont(vis); return err; }
int GGI_X_expose(void *arg, int x, int y, int w, int h) { struct ggi_visual *vis; ggi_x_priv *priv; int err; vis = arg; priv = GGIX_PRIV(vis); /* Expose event may be queued from a previous (larger) mode. In that case we just ignore it and return. */ if ((x+w > LIBGGI_VIRTX(vis)) || y+h > LIBGGI_VIRTY(vis) * (vis->d_frame_num + 1)) return 0; priv->fullflush = 1; err = _ggiInternFlush(vis, x, y, w, h, 2); priv->fullflush = 0; return err; }
int GGI_trueemu_flush(struct ggi_visual *vis, int x, int y, int w, int h, int tryflag) { ggi_trueemu_priv *priv = TRUEEMU_PRIV(vis); int err; MANSYNC_ignore(vis); ggLock(priv->flush_lock); err = _ggi_trueemu_Flush(vis); if (! err) { err = _ggiInternFlush(GGI_VISUAL(priv->parent), x, y, w, h, tryflag); } ggUnlock(priv->flush_lock); MANSYNC_cont(vis); return err; }
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); }