From c2add346ad5c1673ba0334264300e86eb50b2293 Mon Sep 17 00:00:00 2001 From: Alexander Orzechowski Date: Sat, 4 Jan 2025 21:59:19 -0500 Subject: [PATCH] terminal: Refresh only overlay when flash expires If we call render_refresh, that will wait for a callback to the main surface. In the case of a flash, the main surface might not get callbacks if the compositor implements fancy culling optimizations like wlroots wlr_scene compositors such as sway version >=1.10. --- terminal.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/terminal.c b/terminal.c index 5a74631a..7b5a4d2d 100644 --- a/terminal.c +++ b/terminal.c @@ -419,7 +419,12 @@ fdm_flash(struct fdm *fdm, int fd, int events, void *data) (unsigned long long)expiration_count); term->flash.active = false; - render_refresh(term); + render_overlay(term); + + // since the overlay surface is synced with the main window surface, we have + // to commit the main surface for the compositor to acknowledge the new + // overlay state. + wl_surface_commit(term->window->surface.surf); return true; }