[metacity/gnome-3-20] compositor: don't remove window on UnmapNotify event



commit b21f3aed6fefa4339e265fdb07288da699139cf1
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Sep 26 11:19:13 2016 +0300

    compositor: don't remove window on UnmapNotify event
    
    Compositor still needs to know about unmapped windows to properly
    handle window stacking order.
    
    https://bugs.launchpad.net/ubuntu/+source/metacity/+bug/1614050

 src/compositor/compositor-xrender.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
index 677ac36..0e0d436 100644
--- a/src/compositor/compositor-xrender.c
+++ b/src/compositor/compositor-xrender.c
@@ -3242,6 +3242,7 @@ xrender_free_window (MetaCompositor *compositor,
   MetaCompositorXRender *xrc;
   MetaFrame *frame;
   Window xwindow;
+  MetaCompWindow *cw;
 
   xrc = (MetaCompositorXRender *) compositor;
   frame = meta_window_get_frame (window);
@@ -3251,7 +3252,21 @@ xrender_free_window (MetaCompositor *compositor,
   else
     xwindow = meta_window_get_xwindow (window);
 
-  destroy_win (xrc->display, xwindow, FALSE);
+  cw = find_window_in_display (xrc->display, xwindow);
+  if (cw == NULL)
+    return;
+
+  cw->attrs.map_state = IsUnmapped;
+  cw->damaged = FALSE;
+
+  if (cw->extents != None)
+    {
+      dump_xserver_region ("destroy_win", xrc->display, cw->extents);
+      add_damage (cw->screen, cw->extents);
+      cw->extents = None;
+    }
+
+  free_win (cw, FALSE);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]