aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Bozhinov <ammen99@gmail.com>2018-06-16 17:29:26 +0300
committerIlia Bozhinov <ammen99@gmail.com>2018-06-16 17:29:53 +0300
commit23707f65040546d4594e458ab5068c0bccc31bd0 (patch)
treebd100206fd366e19bca3519cfdad9b92801a87f0
parent8e33deb0beb033dd1ddff86d6a071b1a5faa8fdb (diff)
layer-shell: check whether the surface is mapped in layer_surface_destroy()
If the layer surface has been closed by the compositor, using layer_surface_close(), then the unmap event is emitted. However, when the layer surface is later destroyed by the client, the compositor used to get a second unmap, which is fixed with this commit.
-rw-r--r--types/wlr_layer_shell.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/types/wlr_layer_shell.c b/types/wlr_layer_shell.c
index e64d7937..76d6d721 100644
--- a/types/wlr_layer_shell.c
+++ b/types/wlr_layer_shell.c
@@ -176,7 +176,9 @@ static void layer_surface_unmap(struct wlr_layer_surface *surface) {
}
static void layer_surface_destroy(struct wlr_layer_surface *surface) {
- layer_surface_unmap(surface);
+ if (surface->configured && surface->mapped) {
+ layer_surface_unmap(surface);
+ }
wlr_signal_emit_safe(&surface->events.destroy, surface);
wl_resource_set_user_data(surface->resource, NULL);
wl_list_remove(&surface->surface_destroy_listener.link);