xorg/xserver/xorg/dix
sandmann
freedesktop-cvs-commits at pdx.freedesktop.org
Fri Jan 13 00:14:56 EET 2006
CVS commit by sandmann:
Thu Jan 12 17:09:18 2006 Søren Sandmann <sandmann at redhat.com>
* include/window.[ch]: Add new functions to enable and disable
events on Map and Unmap.
* composite/compalloc.c: Use them here to make sure Composite
redirect doesn't cause Map/UnmapNotify events that would confuse
window managers.
M +25 -2 xorg/xserver/xorg/dix/window.c 1.13
--- xorg/xserver/xorg/dix/window.c #1.12:1.13
@@ -2729,5 +2729,5 @@ MapWindow(register WindowPtr pWin, Clien
pWin->mapped = TRUE;
- if (SubStrSend(pWin, pParent))
+ if (SubStrSend(pWin, pParent) && MapUnmapEventsEnabled(pWin))
{
event.u.u.type = MapNotify;
@@ -2984,5 +2984,5 @@ UnmapWindow(register WindowPtr pWin, Boo
if ((!pWin->mapped) || (!(pParent = pWin->parent)))
return(Success);
- if (SubStrSend(pWin, pParent))
+ if (SubStrSend(pWin, pParent) && MapUnmapEventsEnabled(pWin))
{
event.u.u.type = UnmapNotify;
@@ -3286,4 +3286,27 @@ SendVisibilityNotify(WindowPtr pWin)
}
+static WindowPtr windowDisableMapUnmapEvents;
+
+void
+DisableMapUnmapEvents(WindowPtr pWin)
+{
+ assert (windowDisableMapUnmapEvents == NULL);
+
+ windowDisableMapUnmapEvents = pWin;
+}
+
+void
+EnableMapUnmapEvents(WindowPtr pWin)
+{
+ assert (windowDisableMapUnmapEvents != NULL);
+
+ windowDisableMapUnmapEvents = NULL;
+}
+
+Bool
+MapUnmapEventsEnabled(WindowPtr pWin)
+{
+ return pWin != windowDisableMapUnmapEvents;
+}
#define RANDOM_WIDTH 32
More information about the xorg-commit
mailing list