diff options
author | Richard Grenville <[email protected]> | 2014-01-06 15:31:42 +0800 |
---|---|---|
committer | Richard Grenville <[email protected]> | 2014-01-06 15:31:42 +0800 |
commit | 5ae38a62db338cb00d3cb17e3d6b4b93d7c01720 (patch) | |
tree | 442f814fd72bb737bb64aeab159e6a47b8937723 | |
parent | 978dde64920e0e2357225cf0ca6e8865a44c7d7e (diff) | |
parent | 0969d7d525ce8e053f9e8e7dd79540570307f477 (diff) | |
download | tdebase-5ae38a62db338cb00d3cb17e3d6b4b93d7c01720.tar.gz tdebase-5ae38a62db338cb00d3cb17e3d6b4b93d7c01720.zip |
Merge branch 'richardgv-dev'
-rw-r--r-- | common.h | 8 | ||||
-rw-r--r-- | compton.c | 12 |
2 files changed, 18 insertions, 2 deletions
@@ -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; } @@ -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; |