aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <mail@isaacfreund.com>2022-01-23 20:37:37 +0100
committerIsaac Freund <mail@isaacfreund.com>2022-01-23 20:37:37 +0100
commitb716e262cd6ddf53638105261b786ea32a9acc23 (patch)
tree126310894554e633430895de372c463eb93e5169
parent20ca8a2051c2a03c261e2ce4ae3039e3374e90b4 (diff)
downloadriver-b716e262cd6ddf53638105261b786ea32a9acc23.tar.gz
river-b716e262cd6ddf53638105261b786ea32a9acc23.tar.xz
XdgPopup: remove commit listener on destroy if mapped
Since the destroy() function may be called by river while the popup is mapped, we must handle this case.
-rw-r--r--river/XdgPopup.zig2
1 files changed, 2 insertions, 0 deletions
diff --git a/river/XdgPopup.zig b/river/XdgPopup.zig
index 95e504b..e08f7b0 100644
--- a/river/XdgPopup.zig
+++ b/river/XdgPopup.zig
@@ -96,6 +96,8 @@ pub fn destroy(xdg_popup: *XdgPopup) void {
xdg_popup.new_popup.link.remove();
xdg_popup.new_subsurface.link.remove();
+ if (xdg_popup.wlr_xdg_popup.base.mapped) xdg_popup.commit.link.remove();
+
Subsurface.destroySubsurfaces(xdg_popup.wlr_xdg_popup.base.surface);
XdgPopup.destroyPopups(xdg_popup.wlr_xdg_popup.base);