Bug fix #181: Add --xrender-sync{,-fence}

- Add --xrender-sync{,-fence} to deal with redraw lag issue on GLX
  backend. --xrender-sync-fence requires a sufficiently new xorg-server
  and libXext. NO_XSYNC=1 may be used to disable it at compile time.
  Thanks to tchebb for reporting and everybody else for testing. (#181)

- A bit code clean-up. Replace a few XSync() with XFlush() to minimize
  the latency.
This commit is contained in:
Richard Grenville
2014-03-17 23:25:34 +08:00
parent 9950d08ab7
commit e4f3a2d77a
6 changed files with 387 additions and 54 deletions

View File

@ -275,6 +275,15 @@ free_paint(session_t *ps, paint_t *ppaint) {
free_pixmap(ps, &ppaint->pixmap);
}
/**
* Free w->paint.
*/
static inline void
free_wpaint(session_t *ps, win *w) {
free_paint(ps, &w->paint);
free_fence(ps, &w->fence);
}
/**
* Destroy all resources in a <code>struct _win</code>.
*/
@ -883,7 +892,7 @@ static void
damage_win(session_t *ps, XDamageNotifyEvent *de);
static int
error(Display *dpy, XErrorEvent *ev);
xerror(Display *dpy, XErrorEvent *ev);
static void
expose_root(session_t *ps, XRectangle *rects, int nrects);