diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2016-09-26 11:19:13 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2016-09-26 11:19:13 +0300 |
commit | a7953a0d9e83dae0c62f75af8b7c809641f4aa90 (patch) | |
tree | 877ebda5b6fc42bf877eb2aa54028401fd1716f6 | |
parent | 666d3edaac44799ac8bbeb946538469193ed7e0e (diff) | |
download | metacity-a7953a0d9e83dae0c62f75af8b7c809641f4aa90.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.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index 963aa1f7..11b41063 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -3279,6 +3279,7 @@ xrender_free_window (MetaCompositor *compositor, MetaCompositorXRender *xrc; MetaFrame *frame; Window xwindow; + MetaCompWindow *cw; xrc = (MetaCompositorXRender *) compositor; frame = meta_window_get_frame (window); @@ -3288,7 +3289,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 |