summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-09-26 11:19:13 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-09-26 11:25:37 +0300
commitd5f9e42e30c67d0764a936f061a397bd454ccac4 (patch)
tree6a4380cec2693978818242be592dd413d8679252
parent8df92d3c5995b1b99dc8f9e85bd63325402d4b46 (diff)
downloadmetacity-d5f9e42e30c67d0764a936f061a397bd454ccac4.tar.gz
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
-rw-r--r--src/compositor/compositor-xrender.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c
index b134a2f6..e6035b5a 100644
--- a/src/compositor/compositor-xrender.c
+++ b/src/compositor/compositor-xrender.c
@@ -3278,6 +3278,7 @@ xrender_free_window (MetaCompositor *compositor,
MetaCompositorXRender *xrc;
MetaFrame *frame;
Window xwindow;
+ MetaCompWindow *cw;
xrc = (MetaCompositorXRender *) compositor;
frame = meta_window_get_frame (window);
@@ -3287,7 +3288,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);
#endif
}