summaryrefslogtreecommitdiffstats
path: root/compton.c
diff options
context:
space:
mode:
authorRichard Grenville <[email protected]>2013-04-26 14:01:20 +0800
committerRichard Grenville <[email protected]>2013-04-26 14:01:20 +0800
commitb5116f646543d1bcc72f3fd1e9c54be10d9ea8a7 (patch)
treeb715f6150abeb2bc302ab44a5b2c1512decd9a8c /compton.c
parentec2cd6276d6b137b946a48f4dffaaecd793bff0f (diff)
downloadtdebase-b5116f646543d1bcc72f3fd1e9c54be10d9ea8a7.tar.gz
tdebase-b5116f646543d1bcc72f3fd1e9c54be10d9ea8a7.zip
Improvement: Enhance --glx-swap-method
- Enhance --glx-swap-method to support longer buffers ages (3-6), and automatic buffer age detection via GLX_EXT_buffer_age.
Diffstat (limited to 'compton.c')
-rw-r--r--compton.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/compton.c b/compton.c
index 61cd5bcc1..05e115c83 100644
--- a/compton.c
+++ b/compton.c
@@ -50,14 +50,6 @@ const char * const BACKEND_STRS[NUM_BKEND + 1] = {
NULL
};
-/// Names of GLX swap methods.
-const char * const GLX_SWAP_METHODS_STRS[NUM_SWAPM + 1] = {
- "undefined", // SWAPM_UNDEFINED
- "exchange", // SWAPM_EXCHANGE
- "copy", // SWAPM_COPY
- NULL
-};
-
/// Function pointers to init VSync modes.
static bool (* const (VSYNC_FUNCS_INIT[NUM_VSYNC]))(session_t *ps) = {
[VSYNC_DRM ] = vsync_drm_init,
@@ -4266,12 +4258,14 @@ usage(void) {
" GLX backend: Avoid rebinding pixmap on window damage. Probably\n"
" could improve performance on rapid window content changes, but is\n"
" known to break things on some drivers.\n"
- "--glx-swap-method undefined/exchange/copy\n"
+ "--glx-swap-method undefined/copy/exchange/3/4/5/6/buffer-age\n"
" GLX backend: GLX buffer swap method we assume. Could be\n"
- " \"undefined\", \"exchange\", or \"copy\". \"undefined\" is the slowest\n"
- " and the safest; \"exchange\" and \"copy\" are faster but may fail on\n"
- " some drivers. Useless with --glx-use-copysubbuffermesa. Defaults to\n"
- " \"undefined\".\n"
+ " undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).\n"
+ " \"undefined\" is the slowest and the safest, and the default value.\n"
+ " 1 is fastest, but may fail on some drivers, 2-6 are gradually slower\n"
+ " but safer (6 is still faster than 0). -1 means auto-detect using\n"
+ " GLX_EXT_buffer_age, supported by some drivers. Useless with\n"
+ " --glx-use-copysubbuffermesa.\n"
#undef WARNING
#ifndef CONFIG_DBUS
#define WARNING WARNING_DISABLED
@@ -6027,7 +6021,7 @@ session_init(session_t *ps_old, int argc, char **argv) {
.tmout_lst = NULL,
.all_damage = None,
- .all_damage_last = None,
+ .all_damage_last = { None },
.time_start = { 0, 0 },
.redirected = false,
.unredir_possible = false,
@@ -6478,7 +6472,8 @@ session_destroy(session_t *ps) {
free_root_tile(ps);
free_region(ps, &ps->screen_reg);
free_region(ps, &ps->all_damage);
- free_region(ps, &ps->all_damage_last);
+ for (int i = 0; i < CGLX_MAX_BUFFER_AGE; ++i)
+ free_region(ps, &ps->all_damage_last[i]);
free(ps->expose_rects);
free(ps->shadow_corner);
free(ps->shadow_top);