forked from pool/xorg-x11-server
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
|
commit a6a7fadbb03ee99312dfb15ac478ab3c414c1c0b
|
||
|
Author: Kristian Høgsberg <krh@redhat.com>
|
||
|
Date: Wed Jan 16 20:24:11 2008 -0500
|
||
|
|
||
|
Don't break grab and focus state for a window when redirecting it.
|
||
|
|
||
|
Composite uses an unmap/map cycle to trigger backing pixmap allocation
|
||
|
and cliprect recomputation when a window is redirected or unredirected.
|
||
|
To avoid protocol visible side effects, map and unmap events are
|
||
|
disabled temporarily. However, when a window is unmapped it is also
|
||
|
removed from grabs and loses focus, but these state changes are not
|
||
|
disabled.
|
||
|
|
||
|
This change supresses the unmap side effects during the composite
|
||
|
unmap/map cycle and fixes this bug:
|
||
|
|
||
|
http://bugzilla.gnome.org/show_bug.cgi?id=488264
|
||
|
|
||
|
where compiz would cause gnome-screensaver to lose its grab when
|
||
|
compiz unredirects the fullscreen lock window.
|
||
|
|
||
|
diff --git a/dix/window.c b/dix/window.c
|
||
|
index 33cf76b..1ccf126 100644
|
||
|
--- a/dix/window.c
|
||
|
+++ b/dix/window.c
|
||
|
@@ -2993,7 +2993,8 @@ UnrealizeTree(
|
||
|
}
|
||
|
#endif
|
||
|
(* Unrealize)(pChild);
|
||
|
- DeleteWindowFromAnyEvents(pChild, FALSE);
|
||
|
+ if (MapUnmapEventsEnabled(pWin))
|
||
|
+ DeleteWindowFromAnyEvents(pChild, FALSE);
|
||
|
if (pChild->viewable)
|
||
|
{
|
||
|
#ifdef DO_SAVE_UNDERS
|