open-src/xserver/xorg/composite-grabs.patch
author Alan Coopersmith <Alan.Coopersmith@Sun.COM>
Thu, 21 Feb 2008 17:03:02 -0800
changeset 323 19895a0cc743
permissions -rw-r--r--
6662225 Composite extension should be enabled by default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
323
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     1
From a6a7fadbb03ee99312dfb15ac478ab3c414c1c0b Mon Sep 17 00:00:00 2001
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     2
From: =?utf-8?q?Kristian_H=C3=B8gsberg?= <[email protected]>
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     3
Date: Wed, 16 Jan 2008 20:24:11 -0500
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     4
Subject: [PATCH] Don't break grab and focus state for a window when redirecting it.
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     5
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     6
Composite uses an unmap/map cycle to trigger backing pixmap allocation
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     7
and cliprect recomputation when a window is redirected or unredirected.
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     8
To avoid protocol visible side effects, map and unmap events are
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
     9
disabled temporarily.  However, when a window is unmapped it is also
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    10
removed from grabs and loses focus, but these state changes are not
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    11
disabled.
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    12
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    13
This change supresses the unmap side effects during the composite
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    14
unmap/map cycle and fixes this bug:
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    15
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    16
  http://bugzilla.gnome.org/show_bug.cgi?id=488264
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    17
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    18
where compiz would cause gnome-screensaver to lose its grab when
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    19
compiz unredirects the fullscreen lock window.
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    20
---
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    21
 dix/window.c |    3 ++-
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    22
 1 files changed, 2 insertions(+), 1 deletions(-)
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    23
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    24
diff --git a/dix/window.c b/dix/window.c
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    25
index 33cf76b..1ccf126 100644
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    26
--- a/dix/window.c
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    27
+++ b/dix/window.c
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    28
@@ -2993,7 +2993,8 @@ #ifdef PANORAMIX
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    29
 	    } 
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    30
 #endif
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    31
 	    (* Unrealize)(pChild);
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    32
-	    DeleteWindowFromAnyEvents(pChild, FALSE);
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    33
+	    if (MapUnmapEventsEnabled(pWin))
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    34
+		DeleteWindowFromAnyEvents(pChild, FALSE);
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    35
 	    if (pChild->viewable)
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    36
 	    {
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    37
 #ifdef DO_SAVE_UNDERS
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    38
-- 
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    39
1.4.1
19895a0cc743 6662225 Composite extension should be enabled by default
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff changeset
    40