From 717f3ff959cc26d74da1cc5380ab8d33b59673c1 Mon Sep 17 00:00:00 2001 From: Aaron Rainbolt Date: Fri, 10 Oct 2025 15:47:40 -0500 Subject: [PATCH] Don't event-buffer ConfigureNotify, MapNotify, and ReparentNotify events When event buffering is enabled for a qube, previously Qt applications would exhibit some strange flickering / element resizing when opening application menus. This appears to be because ConfigureNotify events were being delayed, causing Qt to draw elements of the user interface with incorrect size and position information. It would then likely have to redraw the menu with the correct information once that information was available to it. ConfigureNotify, MapNotify, and ReparentNotify events all look like they can be passed through without negative effects on anonymity, so make them exempt from event buffering. This appears to resolve the flickering issue. Fixes: https://github.com/QubesOS/qubes-issues/issues/10286 --- gui-daemon/xside.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gui-daemon/xside.c b/gui-daemon/xside.c index 09670d7..4278039 100644 --- a/gui-daemon/xside.c +++ b/gui-daemon/xside.c @@ -2815,7 +2815,16 @@ static void process_xevent(Ghandles * g) XEvent event_buffer; XNextEvent(g->display, &event_buffer); if (g->ebuf_max_delay > 0) { - ebuf_queue_xevent(g, event_buffer); + switch (event_buffer.type) { + case ConfigureNotify: + case ReparentNotify: + case MapNotify: + process_xevent_core(g, event_buffer); + break; + default: + ebuf_queue_xevent(g, event_buffer); + break; + } } else { process_xevent_core(g, event_buffer); }