Misc: xr-glx-hybrid alias & minor fixes

- Add "xr-glx-hybrid" as an alias of "xr_glx_hybrid". (#163)

- Clear damage history in expose_root() and when root window size
  changes. Unfortunately this doesn't fix #181.
This commit is contained in:
Richard Grenville 2014-03-11 07:22:23 +08:00
parent 8a5becf617
commit 9950d08ab7
2 changed files with 16 additions and 0 deletions

View File

@ -1499,6 +1499,11 @@ parse_backend(session_t *ps, const char *str) {
ps->o.backend = BKEND_XR_GLX_HYBRID; ps->o.backend = BKEND_XR_GLX_HYBRID;
return true; return true;
} }
// cju wants to use dashes
if (!strcasecmp(str, "xr-glx-hybrid")) {
ps->o.backend = BKEND_XR_GLX_HYBRID;
return true;
}
printf_errf("(\"%s\"): Invalid backend argument.", str); printf_errf("(\"%s\"): Invalid backend argument.", str);
return false; return false;
} }
@ -1788,6 +1793,15 @@ free_region(session_t *ps, XserverRegion *p) {
} }
} }
/**
* Free all regions in ps->all_damage_last .
*/
static inline void
free_all_damage_last(session_t *ps) {
for (int i = 0; i < CGLX_MAX_BUFFER_AGE; ++i)
free_region(ps, &ps->all_damage_last[i]);
}
/** /**
* Crop a rectangle by another rectangle. * Crop a rectangle by another rectangle.
* *

View File

@ -2983,6 +2983,7 @@ configure_win(session_t *ps, XConfigureEvent *ce) {
rebuild_screen_reg(ps); rebuild_screen_reg(ps);
rebuild_shadow_exclude_reg(ps); rebuild_shadow_exclude_reg(ps);
free_all_damage_last(ps);
#ifdef CONFIG_VSYNC_OPENGL #ifdef CONFIG_VSYNC_OPENGL
if (BKEND_GLX == ps->o.backend) if (BKEND_GLX == ps->o.backend)
@ -3275,6 +3276,7 @@ error(Display __attribute__((unused)) *dpy, XErrorEvent *ev) {
static void static void
expose_root(session_t *ps, XRectangle *rects, int nrects) { expose_root(session_t *ps, XRectangle *rects, int nrects) {
free_all_damage_last(ps);
XserverRegion region = XFixesCreateRegion(ps->dpy, rects, nrects); XserverRegion region = XFixesCreateRegion(ps->dpy, rects, nrects);
add_damage(ps, region); add_damage(ps, region);
} }