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