forked from AuroraMiddleware/gtk
Make process_all_updates draw synchronously
By calling XSync in _gdk_x11_display_after_process_all_updates we effectively make gdk rendering sync, which avoids problems with the client animations running faster than the Xserver rendering, thus filling up the X rendering pipes and essentially "locking up" the Xserver (i.e. you can't even close the offending window because the WM is starved too). I verified this worked by making GtkSpinner paint multiple times on my intel driver (which has some issue making this rendering slow atm), and without this patch i get severe lag where even window dragging stops for 5 seconds when i drag the mouse around. However, with the patch everything is smooth. https://bugzilla.gnome.org/show_bug.cgi?id=684639
This commit is contained in:
parent
d6809d050a
commit
83c66c9c2c
@ -4858,6 +4858,11 @@ _gdk_x11_display_before_process_all_updates (GdkDisplay *display)
|
||||
void
|
||||
_gdk_x11_display_after_process_all_updates (GdkDisplay *display)
|
||||
{
|
||||
/* Sync after all drawing, otherwise the client can get "ahead" of
|
||||
the server rendering during animations, such that we fill up
|
||||
the Xserver pipes with sync rendering ops not letting other
|
||||
clients (including the VM) do anything. */
|
||||
XSync (GDK_DISPLAY_XDISPLAY (display), FALSE);
|
||||
}
|
||||
|
||||
static Bool
|
||||
|
Loading…
Reference in New Issue
Block a user