aboutsummaryrefslogtreecommitdiff
path: root/src/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers')
-rw-r--r--src/handlers/compositor.rs9
-rw-r--r--src/handlers/xdg_shell.rs6
2 files changed, 15 insertions, 0 deletions
diff --git a/src/handlers/compositor.rs b/src/handlers/compositor.rs
index 845b720d..34030124 100644
--- a/src/handlers/compositor.rs
+++ b/src/handlers/compositor.rs
@@ -209,6 +209,9 @@ impl CompositorHandler for State {
let window = mapped.window.clone();
let output = output.clone();
+ #[cfg(feature = "xdp-gnome-screencast")]
+ let id = mapped.id();
+
// This is a commit of a previously-mapped toplevel.
let is_mapped =
with_renderer_surface_state(surface, |state| state.buffer().is_some())
@@ -235,6 +238,12 @@ impl CompositorHandler for State {
let active_window = self.niri.layout.active_window().map(|(m, _)| &m.window);
let was_active = active_window == Some(&window);
+ #[cfg(feature = "xdp-gnome-screencast")]
+ self.niri
+ .stop_casts_for_target(crate::pw_utils::CastTarget::Window {
+ id: u64::from(id.get()),
+ });
+
self.niri.layout.remove_window(&window);
if was_active {
diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs
index 30b2f5d8..f3337786 100644
--- a/src/handlers/xdg_shell.rs
+++ b/src/handlers/xdg_shell.rs
@@ -466,6 +466,12 @@ impl XdgShellHandler for State {
let window = mapped.window.clone();
let output = output.clone();
+ #[cfg(feature = "xdp-gnome-screencast")]
+ self.niri
+ .stop_casts_for_target(crate::pw_utils::CastTarget::Window {
+ id: u64::from(mapped.id().get()),
+ });
+
self.backend.with_primary_renderer(|renderer| {
self.niri.layout.store_unmap_snapshot(renderer, &window);
});