diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-27 11:36:24 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-28 10:39:35 +0400 |
| commit | dc92d80b9f8de761df2aa0bfc90b61d53b9c0831 (patch) | |
| tree | 9436ec6c92f9f967aa309a6f1ca6aa5b8ab5cb8a /src/handlers | |
| parent | 0757ad08e776665603cba238301295ad27132d06 (diff) | |
| download | niri-dc92d80b9f8de761df2aa0bfc90b61d53b9c0831.tar.gz niri-dc92d80b9f8de761df2aa0bfc90b61d53b9c0831.tar.bz2 niri-dc92d80b9f8de761df2aa0bfc90b61d53b9c0831.zip | |
Implement initial window screencasting
Diffstat (limited to 'src/handlers')
| -rw-r--r-- | src/handlers/compositor.rs | 9 | ||||
| -rw-r--r-- | src/handlers/xdg_shell.rs | 6 |
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); }); |
