Skip to content

Commit 717f3ff

Browse files
committed
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: QubesOS/qubes-issues#10286
1 parent 07ce18d commit 717f3ff

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

gui-daemon/xside.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2815,7 +2815,16 @@ static void process_xevent(Ghandles * g)
28152815
XEvent event_buffer;
28162816
XNextEvent(g->display, &event_buffer);
28172817
if (g->ebuf_max_delay > 0) {
2818-
ebuf_queue_xevent(g, event_buffer);
2818+
switch (event_buffer.type) {
2819+
case ConfigureNotify:
2820+
case ReparentNotify:
2821+
case MapNotify:
2822+
process_xevent_core(g, event_buffer);
2823+
break;
2824+
default:
2825+
ebuf_queue_xevent(g, event_buffer);
2826+
break;
2827+
}
28192828
} else {
28202829
process_xevent_core(g, event_buffer);
28212830
}

0 commit comments

Comments
 (0)