[Xfce4-commits] r29493 - in xfwm4/trunk: . src

Olivier Fourdan olivier at xfce.org
Mon Feb 16 12:11:28 CET 2009


Author: olivier
Date: 2009-02-16 11:11:27 +0000 (Mon, 16 Feb 2009)
New Revision: 29493

Modified:
   xfwm4/trunk/ChangeLog
   xfwm4/trunk/NEWS
   xfwm4/trunk/src/client.c
   xfwm4/trunk/src/events.c
Log:
	* src/events.c, src/client.c: Fix ICCCM synthetic unmap notify 
	  handling causing a race condition with amule when started hidden 
	  to system tray (Bug #4928). Note: This is still unclear to me
	  what is correct behaviour here, the problem reported in bug
	  #4928 happens with some other window managers too (e.g. kwin from
	  kde 4.2, fluxbox) but not with others (openbox, metacity, icewm).

Modified: xfwm4/trunk/ChangeLog
===================================================================
--- xfwm4/trunk/ChangeLog	2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/ChangeLog	2009-02-16 11:11:27 UTC (rev 29493)
@@ -1,3 +1,12 @@
+2009-02-16	olivier
+
+	* src/events.c, src/client.c: Fix ICCCM synthetic unmap notify 
+	  handling causing a race condition with amule when started hidden 
+	  to system tray (Bug #4928). Note: This is still unclear to me
+	  what is correct behaviour here, the problem reported in bug
+	  #4928 happens with some other window managers too (e.g. kwin from
+	  kde 4.2, fluxbox) but not with others (openbox, metacity, icewm).
+
 2009-02-07	jannis
 
 	* settings-dialogs/xfwm4-settings.c : Add the new parameter required

Modified: xfwm4/trunk/NEWS
===================================================================
--- xfwm4/trunk/NEWS	2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/NEWS	2009-02-16 11:11:27 UTC (rev 29493)
@@ -12,6 +12,8 @@
 - Do not automatically give focus to windows placed on lower layers, but 
   focus those on upper layers at first map.
 - Fix compilation failure in debug full without render
+- Fix ICCCM synthetic unmap notify handling causing a race condition with
+  amule when started hidden to system tray (Bug #4928)
 
 4.5.99.1 (Xfce 4.6rc1)
 ======================

Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c	2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/src/client.c	2009-02-16 11:11:27 UTC (rev 29493)
@@ -1940,7 +1940,7 @@
         XCreateWindow (display_info->dpy, screen_info->xroot, 0, 0, 1, 1, 0,
         c->depth, InputOutput, c->visual, valuemask, &attributes);
 
-    XSelectInput (display_info->dpy, c->window, 0);
+    XSelectInput (display_info->dpy, c->window, NoEventMask);
     XSetWindowBorderWidth (display_info->dpy, c->window, 0);
     if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED))
     {
@@ -1950,7 +1950,6 @@
     valuemask = CWEventMask;
     attributes.event_mask = (CLIENT_EVENT_MASK);
     XChangeWindowAttributes (display_info->dpy, c->window, valuemask, &attributes);
-    XSelectInput (display_info->dpy, c->window, CLIENT_EVENT_MASK);
     if (display_info->have_shape)
     {
         XShapeSelectInput (display_info->dpy, c->window, ShapeNotifyMask);
@@ -2652,6 +2651,7 @@
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
     timestamp = myDisplayGetCurrentTime (display_info);
+    timestamp = myDisplayGetTime (display_info, timestamp);
 
     if (FLAG_TEST (c->wm_flags, WM_FLAG_DELETE))
     {

Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c	2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/src/events.c	2009-02-16 11:11:27 UTC (rev 29493)
@@ -1186,12 +1186,14 @@
          */
         if ((ev->event == screen_info->xroot) && (ev->send_event))
         {
-            TRACE ("ICCCM UnmapNotify for \"%s\"", c->name);
-            list_of_windows = clientListTransientOrModal (c);
-            clientPassFocus (screen_info, c, list_of_windows);
-            clientUnframe (c, FALSE);
-            g_list_free (list_of_windows);
-
+            if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_VISIBLE))
+            {
+                TRACE ("ICCCM UnmapNotify for \"%s\"", c->name);
+                list_of_windows = clientListTransientOrModal (c);
+                clientPassFocus (screen_info, c, list_of_windows);
+                clientUnframe (c, FALSE);
+                g_list_free (list_of_windows);
+            }
             return status;
         }
 




More information about the Xfce4-commits mailing list