From e077290c56022255a986c0560f4d496a29bab55e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 3 Mar 2020 18:19:47 +0100 Subject: [PATCH] quirks: add shortcut for flipping all CSD surfaces sync/desync state --- quirks.c | 22 ++++++++++++++++++++++ quirks.h | 6 ++++++ terminal.c | 20 -------------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/quirks.c b/quirks.c index 0db29a5e..6db96e46 100644 --- a/quirks.c +++ b/quirks.c @@ -7,6 +7,8 @@ #define LOG_ENABLE_DBG 0 #include "log.h" +#define ALEN(v) (sizeof(v) / sizeof(v[0])) + static bool is_weston(void) { @@ -53,3 +55,23 @@ quirk_weston_subsurface_desync_off(struct wl_subsurface *sub) wl_subsurface_set_sync(sub); } + +void +quirk_weston_csd_on(struct terminal *term) +{ + if (term->window->use_csd != CSD_YES) + return; + + for (int i = 0; i < ALEN(term->window->csd.surface); i++) + quirk_weston_subsurface_desync_on(term->window->csd.sub_surface[i]); +} + +void +quirk_weston_csd_off(struct terminal *term) +{ + if (term->window->use_csd != CSD_YES) + return; + + for (int i = 0; i < ALEN(term->window->csd.surface); i++) + quirk_weston_subsurface_desync_off(term->window->csd.sub_surface[i]); +} diff --git a/quirks.h b/quirks.h index ce4b8b01..7b6ab4f8 100644 --- a/quirks.h +++ b/quirks.h @@ -2,5 +2,11 @@ #include +#include "terminal.h" + void quirk_weston_subsurface_desync_on(struct wl_subsurface *sub); void quirk_weston_subsurface_desync_off(struct wl_subsurface *sub); + +/* Shortcuts to call desync_{on,off} on all CSD subsurfaces */ +void quirk_weston_csd_on(struct terminal *term); +void quirk_weston_csd_off(struct terminal *term); diff --git a/terminal.c b/terminal.c index c57b3c1c..ebc27b3c 100644 --- a/terminal.c +++ b/terminal.c @@ -1627,26 +1627,6 @@ term_restore_cursor(struct terminal *term) term->cursor.lcf = term->saved_cursor.lcf; } -static void -quirk_weston_csd_on(struct terminal *term) -{ - if (term->window->use_csd != CSD_YES) - return; - - for (int i = 0; i < ALEN(term->window->csd.surface); i++) - quirk_weston_subsurface_desync_on(term->window->csd.sub_surface[i]); -} - -static void -quirk_weston_csd_off(struct terminal *term) -{ - if (term->window->use_csd != CSD_YES) - return; - - for (int i = 0; i < ALEN(term->window->csd.surface); i++) - quirk_weston_subsurface_desync_off(term->window->csd.sub_surface[i]); -} - void term_visual_focus_in(struct terminal *term) {