mutter/clutter/x11
Robert Bragg 771348b369 x11: minimize nasty artefacts when resizing windows
This is a workaround for a race condition when resizing windows while
there are in-flight glXCopySubBuffer blits happening.

The problem stems from the fact that rectangles for the blits are
described relative to the bottom left of the window and because we can't
guarantee control over the X window gravity used when resizing so the
gravity is typically NorthWest not SouthWest.

This means if you grow a window vertically the server will make sure to
place the old contents of the window at the top-left/north-west of your
new larger window, but that may happen asynchronous to GLX preparing to
do a blit specified relative to the bottom-left/south-west of the window
(based on the old smaller window geometry).

When the GLX issued blit finally happens relative to the new bottom of
your window, the destination will have shifted relative to the top-left
where all the pixels you care about are so it will result in a nasty
artefact making resizing look very ugly!

We can't currently fix this completely, in-part because the window
manager tends to trample any gravity we might set.  This workaround
instead simply disables blits for a while if we are notified of any
resizes happening so if the user is resizing a window via the window
manager then they may see an artefact for one frame but then we will
fallback to redrawing the full stage until the cooling off period is
over.
2010-09-29 15:12:59 +01:00
..
xsettings x11: Add the XSETTINGS machinery 2010-06-21 15:55:36 +01:00
clutter-backend-x11-private.h Remove mentions of the FSF address 2010-03-01 12:56:10 +00:00
clutter-backend-x11.c Constify Event accessors and copy method 2010-09-08 15:15:57 +01:00
clutter-backend-x11.h x11: Use XKB detectable auto-repeat 2010-07-13 08:27:48 +01:00
clutter-device-manager-x11.c Conditionally use g_object_notify_by_pspec 2010-08-10 17:12:06 +01:00
clutter-device-manager-x11.h device: Impose per-backend DeviceManager 2010-02-17 17:46:48 +00:00
clutter-event-x11.c x11: minimize nasty artefacts when resizing windows 2010-09-29 15:12:59 +01:00
clutter-input-device-x11.c Conditionally use g_object_notify_by_pspec 2010-08-10 17:12:06 +01:00
clutter-input-device-x11.h device: Make InputDevice an object and subclass it for X11 2010-01-20 00:38:08 +00:00
clutter-keymap-x11.c Conditionally use g_object_notify_by_pspec 2010-08-10 17:12:06 +01:00
clutter-keymap-x11.h x11: Use XKB to translate keycodes into key symbols 2010-07-13 11:54:44 +01:00
clutter-settings-x11.h x11: Add the XSETTINGS machinery 2010-06-21 15:55:36 +01:00
clutter-stage-x11.c Try to clean up how we handle actor transformations 2010-09-13 18:18:34 +01:00
clutter-stage-x11.h x11: minimize nasty artefacts when resizing windows 2010-09-29 15:12:59 +01:00
clutter-x11-enum-types.c.in 2008-06-30 Emmanuele Bassi <ebassi@openedhand.com> 2008-06-30 15:03:42 +00:00
clutter-x11-enum-types.h.in 2008-06-30 Emmanuele Bassi <ebassi@openedhand.com> 2008-06-30 15:03:42 +00:00
clutter-x11-texture-pixmap.c Queue clipped redraws work in terms of paint volumes 2010-09-29 15:12:57 +01:00
clutter-x11-texture-pixmap.h x11: Clean up TexturePixmap header and private data structure 2010-07-21 15:14:36 +01:00
clutter-x11.h x11: Store the group inside the event platform data 2010-07-13 08:27:48 +01:00
clutter-x11.pc.in Intial Re-layout of the Cogl source code and introduction of a Cogl Winsys 2009-10-16 18:58:50 +01:00
Makefile.am x11: Add a Keymap ancillary object 2010-07-13 08:27:48 +01:00