quirks: remove subsurface unmap quirk for Sway

Sway used to have an issue where unmapping a subsurface did not damage
the surface below (https://github.com/swaywm/sway/issues/6960).

This has been fixed for quite some time now, so let's remove the
quirk.
This commit is contained in:
Daniel Eklöf 2025-06-09 07:08:24 +02:00
parent eeaecba723
commit 7347f4beb1
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 8 additions and 26 deletions

View file

@ -123,6 +123,11 @@
### Removed ### Removed
* Subsurface unmap quirk for Sway. This was a workaround added in
1.12.1, for Sway issue [#6960][sway-6960].
### Fixed ### Fixed
* `REP`: wrong width of repeated multi-codepoint graphemes. * `REP`: wrong width of repeated multi-codepoint graphemes.

View file

@ -67,6 +67,7 @@ quirk_weston_csd_off(struct terminal *term)
quirk_weston_subsurface_desync_off(term->window->csd.surface[i].sub); quirk_weston_subsurface_desync_off(term->window->csd.surface[i].sub);
} }
#if 0
static bool static bool
is_sway(void) is_sway(void)
{ {
@ -82,13 +83,4 @@ is_sway(void)
return is_sway; return is_sway;
} }
#endif
void
quirk_sway_subsurface_unmap(struct terminal *term)
{
return;
if (!is_sway())
return;
wl_surface_damage_buffer(term->window->surface.surf, 0, 0, INT32_MAX, INT32_MAX);
}

View file

@ -21,5 +21,3 @@ void quirk_weston_subsurface_desync_off(struct wl_subsurface *sub);
/* Shortcuts to call desync_{on,off} on all CSD subsurfaces */ /* Shortcuts to call desync_{on,off} on all CSD subsurfaces */
void quirk_weston_csd_on(struct terminal *term); void quirk_weston_csd_on(struct terminal *term);
void quirk_weston_csd_off(struct terminal *term); void quirk_weston_csd_off(struct terminal *term);
void quirk_sway_subsurface_unmap(struct terminal *term);

View file

@ -1970,10 +1970,6 @@ render_overlay(struct terminal *term)
wl_surface_commit(overlay->surface.surf); wl_surface_commit(overlay->surface.surf);
term->render.last_overlay_style = OVERLAY_NONE; term->render.last_overlay_style = OVERLAY_NONE;
term->render.last_overlay_buf = NULL; term->render.last_overlay_buf = NULL;
/* Work around Sway bug - unmapping a sub-surface does not
* damage the underlying surface */
quirk_sway_subsurface_unmap(term);
} }
return; return;
} }
@ -2919,13 +2915,8 @@ render_scrollback_position(struct terminal *term)
struct wl_window *win = term->window; struct wl_window *win = term->window;
if (term->grid->view == term->grid->offset) { if (term->grid->view == term->grid->offset) {
if (win->scrollback_indicator.surface.surf != NULL) { if (win->scrollback_indicator.surface.surf != NULL)
wayl_win_subsurface_destroy(&win->scrollback_indicator); wayl_win_subsurface_destroy(&win->scrollback_indicator);
/* Work around Sway bug - unmapping a sub-surface does not damage
* the underlying surface */
quirk_sway_subsurface_unmap(term);
}
return; return;
} }

View file

@ -820,10 +820,6 @@ urls_reset(struct terminal *term)
tll_foreach(term->window->urls, it) { tll_foreach(term->window->urls, it) {
wayl_win_subsurface_destroy(&it->item.surf); wayl_win_subsurface_destroy(&it->item.surf);
tll_remove(term->window->urls, it); tll_remove(term->window->urls, it);
/* Work around Sway bug - unmapping a sub-surface does not
* damage the underlying surface */
quirk_sway_subsurface_unmap(term);
} }
} }