[Xfce4-commits] r26604 - xfwm4/trunk/src

Olivier Fourdan olivier at xfce.org
Sun Feb 10 23:31:48 CET 2008


Author: olivier
Date: 2008-02-10 22:31:48 +0000 (Sun, 10 Feb 2008)
New Revision: 26604

Modified:
   xfwm4/trunk/src/compositor.c
Log:
Bug fix with fullscreen overlays

Modified: xfwm4/trunk/src/compositor.c
===================================================================
--- xfwm4/trunk/src/compositor.c	2008-02-09 16:22:39 UTC (rev 26603)
+++ xfwm4/trunk/src/compositor.c	2008-02-10 22:31:48 UTC (rev 26604)
@@ -16,7 +16,7 @@
 
         xcompmgr - (c) 2003 Keith Packard
         metacity - (c) 2003, 2004 Red Hat, Inc.
-        xfwm4    - (c) 2005-2007 Olivier Fourdan
+        xfwm4    - (c) 2005-2008 Olivier Fourdan
 
 */
 
@@ -1762,30 +1762,32 @@
     DisplayInfo *display_info;
 
     g_return_if_fail (cw != NULL);
-    TRACE ("entering map_win 0x%lx", cw->id);
+    TRACE ("entering map_win 0x%lx\n", cw->id);
 
-    cw->viewable = TRUE;
-    cw->damaged = FALSE;
-
     screen_info = cw->screen_info;
     display_info = screen_info->display_info;
 
     if (!WIN_IS_REDIRECTED(cw))
     {
         /* To be safe, we count only the fullscreen overlays */
-        if (WIN_IS_FULLSCREEN(cw))
+        if (WIN_IS_FULLSCREEN(cw) && WIN_IS_VIEWABLE (cw))
         {
             screen_info->wins_unredirected++;
         }
 #if HAVE_OVERLAYS
         if ((screen_info->wins_unredirected == 1) && (display_info->have_overlays))
         {
+            TRACE ("Unmapping overlay window");
             XUnmapWindow (myScreenGetXDisplay (screen_info), screen_info->overlay);
         }
 #endif /* HAVE_OVERLAYS */
         TRACE ("Mapping unredirected window 0x%lx, wins_unredirected increased to %i", cw->id, screen_info->wins_unredirected);
         return;
     }
+
+    cw->viewable = TRUE;
+    cw->damaged = FALSE;
+
     if (!screen_info->params->unredirect_overlays)
     {
         TRACE ("Not unredirecting wins_unredirected");
@@ -1832,6 +1834,7 @@
 #if HAVE_OVERLAYS
             if (display_info->have_overlays)
             {
+                TRACE ("Remapping overlay window");
                 XMapWindow (myScreenGetXDisplay (screen_info), screen_info->overlay);
             }
 #endif /* HAVE_OVERLAYS */
@@ -2148,7 +2151,10 @@
     {
         ScreenInfo *screen_info;
 
-        unmap_win (cw);
+        if (WIN_IS_VIEWABLE (cw))
+        {
+            unmap_win (cw);
+        }
         screen_info = cw->screen_info;
         screen_info->cwindows = g_list_remove (screen_info->cwindows, (gconstpointer) cw);
 
@@ -2439,7 +2445,10 @@
     cw = find_cwindow_in_display (display_info, ev->window);
     if (cw)
     {
-        unmap_win (cw);
+        if (WIN_IS_VIEWABLE (cw))
+        {
+            unmap_win (cw);
+        }
     }
 }
 



More information about the Xfce4-commits mailing list