summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Grenville <pyxlcy@gmail.com>2014-03-11 07:22:23 +0800
committerRichard Grenville <pyxlcy@gmail.com>2014-03-11 07:22:23 +0800
commit53d0c5c015d438172957a1ca0f31e1fb6fa9b150 (patch)
tree8bb693dbf1b2b21052f9b59aa033b23e3259dd78
parent9745bfe765a42d4183dbcf343e889e1cb7cf18a4 (diff)
downloadtdebase-53d0c5c015d438172957a1ca0f31e1fb6fa9b150.tar.gz
tdebase-53d0c5c015d438172957a1ca0f31e1fb6fa9b150.zip
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.
-rw-r--r--common.h14
-rw-r--r--compton.c2
2 files changed, 16 insertions, 0 deletions
diff --git a/common.h b/common.h
index 7786f82b8..e87651c9e 100644
--- a/common.h
+++ b/common.h
@@ -1499,6 +1499,11 @@ parse_backend(session_t *ps, const char *str) {
ps->o.backend = BKEND_XR_GLX_HYBRID;
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);
return false;
}
@@ -1789,6 +1794,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.
*
* psrc and pdst cannot be the same.
diff --git a/compton.c b/compton.c
index 9d058767c..645aa5c57 100644
--- a/compton.c
+++ b/compton.c
@@ -2983,6 +2983,7 @@ configure_win(session_t *ps, XConfigureEvent *ce) {
rebuild_screen_reg(ps);
rebuild_shadow_exclude_reg(ps);
+ free_all_damage_last(ps);
#ifdef CONFIG_VSYNC_OPENGL
if (BKEND_GLX == ps->o.backend)
@@ -3275,6 +3276,7 @@ error(Display __attribute__((unused)) *dpy, XErrorEvent *ev) {
static void
expose_root(session_t *ps, XRectangle *rects, int nrects) {
+ free_all_damage_last(ps);
XserverRegion region = XFixesCreateRegion(ps->dpy, rects, nrects);
add_damage(ps, region);
}