summaryrefslogtreecommitdiff
path: root/src/protocols
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2024-07-27 18:08:22 +0200
committervaxerski <vaxry@vaxry.net>2024-07-27 18:08:22 +0200
commit024327154425c76a2932d644d76990a00b5fcdac (patch)
treec1639764bb134bf9d3e5e160271e07c223d8ce2a /src/protocols
parent729b47d46d0c749efbffe01ea863a124fad562b4 (diff)
layer-shell: properly map and unmap surface and propagate unmap events
Diffstat (limited to 'src/protocols')
-rw-r--r--src/protocols/LayerShell.cpp2
-rw-r--r--src/protocols/LayerShell.hpp1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/protocols/LayerShell.cpp b/src/protocols/LayerShell.cpp
index 4e733b35..e018c3d0 100644
--- a/src/protocols/LayerShell.cpp
+++ b/src/protocols/LayerShell.cpp
@@ -38,6 +38,8 @@ CLayerShellResource::CLayerShellResource(SP<CZwlrLayerSurfaceV1> resource_, SP<C
PROTO::layerShell->destroyResource(this);
});
+ listeners.unmapSurface = surf_->events.unmap.registerListener([this](std::any d) { events.unmap.emit(); });
+
listeners.commitSurface = surf_->events.commit.registerListener([this](std::any d) {
current = pending;
pending.committed = 0;
diff --git a/src/protocols/LayerShell.hpp b/src/protocols/LayerShell.hpp
index 221d95c0..ee0b7859 100644
--- a/src/protocols/LayerShell.hpp
+++ b/src/protocols/LayerShell.hpp
@@ -70,6 +70,7 @@ class CLayerShellResource : public ISurfaceRole {
struct {
CHyprSignalListener commitSurface;
CHyprSignalListener destroySurface;
+ CHyprSignalListener unmapSurface;
} listeners;
bool closed = false;