summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Grenville <[email protected]>2014-01-06 15:31:42 +0800
committerRichard Grenville <[email protected]>2014-01-06 15:31:42 +0800
commit5ae38a62db338cb00d3cb17e3d6b4b93d7c01720 (patch)
tree442f814fd72bb737bb64aeab159e6a47b8937723
parent978dde64920e0e2357225cf0ca6e8865a44c7d7e (diff)
parent0969d7d525ce8e053f9e8e7dd79540570307f477 (diff)
downloadtdebase-5ae38a62db338cb00d3cb17e3d6b4b93d7c01720.tar.gz
tdebase-5ae38a62db338cb00d3cb17e3d6b4b93d7c01720.zip
Merge branch 'richardgv-dev'
-rw-r--r--common.h8
-rw-r--r--compton.c12
2 files changed, 18 insertions, 2 deletions
diff --git a/common.h b/common.h
index 5ac37acba..7786f82b8 100644
--- a/common.h
+++ b/common.h
@@ -513,6 +513,9 @@ typedef struct {
bool dbe;
/// Whether to do VSync aggressively.
bool vsync_aggressive;
+ /// Whether to use glFinish() instead of glFlush() for (possibly) better
+ /// VSync yet probably higher CPU usage.
+ bool vsync_use_glfinish;
// === Shadow ===
/// Enable/disable shadow for specific window types.
@@ -1491,6 +1494,11 @@ parse_backend(session_t *ps, const char *str) {
ps->o.backend = i;
return true;
}
+ // Keep compatibility with an old revision containing a spelling mistake...
+ if (!strcasecmp(str, "xr_glx_hybird")) {
+ ps->o.backend = BKEND_XR_GLX_HYBRID;
+ return true;
+ }
printf_errf("(\"%s\"): Invalid backend argument.", str);
return false;
}
diff --git a/compton.c b/compton.c
index 95f6b77ce..3ddf46f4c 100644
--- a/compton.c
+++ b/compton.c
@@ -1905,7 +1905,10 @@ paint_all(session_t *ps, XserverRegion region, XserverRegion region_real, win *t
XSync(ps->dpy, False);
#ifdef CONFIG_VSYNC_OPENGL
if (ps->glx_context) {
- glFinish();
+ if (ps->o.vsync_use_glfinish)
+ glFinish();
+ else
+ glFlush();
glXWaitX();
}
#endif
@@ -1939,7 +1942,10 @@ paint_all(session_t *ps, XserverRegion region, XserverRegion region_real, win *t
#ifdef CONFIG_VSYNC_OPENGL
case BKEND_XR_GLX_HYBRID:
XSync(ps->dpy, False);
- glFinish();
+ if (ps->o.vsync_use_glfinish)
+ glFinish();
+ else
+ glFlush();
glXWaitX();
paint_bind_tex_real(ps, &ps->tgt_buffer,
ps->root_width, ps->root_height, ps->depth,
@@ -5421,6 +5427,7 @@ get_cfg(session_t *ps, int argc, char *const *argv, bool first_pass) {
{ "unredir-if-possible-exclude", required_argument, NULL, 308 },
{ "unredir-if-possible-delay", required_argument, NULL, 309 },
{ "write-pid-path", required_argument, NULL, 310 },
+ { "vsync-use-glfinish", no_argument, NULL, 311 },
// Must terminate with a NULL entry
{ NULL, 0, NULL, 0 },
};
@@ -5668,6 +5675,7 @@ get_cfg(session_t *ps, int argc, char *const *argv, bool first_pass) {
// --write-pid-path
ps->o.write_pid_path = mstrcpy(optarg);
break;
+ P_CASEBOOL(311, vsync_use_glfinish);
default:
usage(1);
break;