xwm: Just ignore the synthetic unmap_notify
As per ICCCM 4.1.4 we're supposed to withdraw the window when we see the real unmap or the synthetic unmap, whichever comes first. The synthetic unmap may come after the window has been destroyed, so let's just only handle the real unmap.
This commit is contained in:
parent
f7a69642a9
commit
d64bdf4755
@ -562,15 +562,12 @@ weston_wm_handle_unmap_notify(struct weston_wm *wm, xcb_generic_event_t *event)
|
|||||||
if (our_resource(wm, unmap_notify->window))
|
if (our_resource(wm, unmap_notify->window))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
window = hash_table_lookup(wm->window_hash, unmap_notify->window);
|
if (unmap_notify->response_type & 0x80)
|
||||||
if (window->frame_id == XCB_WINDOW_NONE) {
|
/* We just ignore the ICCCM 4.1.4 synthetic unmap notify
|
||||||
/* We already withdrew this window on the real unmap
|
* as it may come in after we've destroyed the window. */
|
||||||
* notify and this is the synthetic unmap notify from
|
|
||||||
* the client, or the other way around (ICCCM 4.1.4).
|
|
||||||
* Either way, we're already done so just return. */
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
|
window = hash_table_lookup(wm->window_hash, unmap_notify->window);
|
||||||
if (window->repaint_source)
|
if (window->repaint_source)
|
||||||
wl_event_source_remove(window->repaint_source);
|
wl_event_source_remove(window->repaint_source);
|
||||||
if (window->cairo_surface)
|
if (window->cairo_surface)
|
||||||
|
Loading…
Reference in New Issue
Block a user