diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-03 11:33:24 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-03 11:38:09 +0400 |
| commit | fd1d4b07fd46e298131d9030ea49dc3453e5e478 (patch) | |
| tree | 47abe9426eaf62e80ce45659e57bdb67b88a1b42 /src/niri.rs | |
| parent | 8b5acd5e6ef40f6122ba43711a462ac8d8c7f6e7 (diff) | |
| download | niri-fd1d4b07fd46e298131d9030ea49dc3453e5e478.tar.gz niri-fd1d4b07fd46e298131d9030ea49dc3453e5e478.tar.bz2 niri-fd1d4b07fd46e298131d9030ea49dc3453e5e478.zip | |
Replace renderer() with with_primary_renderer()
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/niri.rs b/src/niri.rs index fb8c3c9d..c07bb081 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -580,31 +580,32 @@ impl State { let ScreenshotToNiri::TakeScreenshot { include_cursor } = msg; let _span = tracy_client::span!("TakeScreenshot"); - let Some(renderer) = self.backend.renderer() else { - let msg = NiriToScreenshot::ScreenshotResult(None); - if let Err(err) = to_screenshot.send_blocking(msg) { - warn!("error sending None to screenshot: {err:?}"); - } - return; - }; + let rv = self.backend.with_primary_renderer(|renderer| { + let on_done = { + let to_screenshot = to_screenshot.clone(); + move |path| { + let msg = NiriToScreenshot::ScreenshotResult(Some(path)); + if let Err(err) = to_screenshot.send_blocking(msg) { + warn!("error sending path to screenshot: {err:?}"); + } + } + }; + + let res = self + .niri + .screenshot_all_outputs(renderer, include_cursor, on_done); - let on_done = { - let to_screenshot = to_screenshot.clone(); - move |path| { - let msg = NiriToScreenshot::ScreenshotResult(Some(path)); + if let Err(err) = res { + warn!("error taking a screenshot: {err:?}"); + + let msg = NiriToScreenshot::ScreenshotResult(None); if let Err(err) = to_screenshot.send_blocking(msg) { - warn!("error sending path to screenshot: {err:?}"); + warn!("error sending None to screenshot: {err:?}"); } } - }; - - let res = self - .niri - .screenshot_all_outputs(renderer, include_cursor, on_done); - - if let Err(err) = res { - warn!("error taking a screenshot: {err:?}"); + }); + if rv.is_none() { let msg = NiriToScreenshot::ScreenshotResult(None); if let Err(err) = to_screenshot.send_blocking(msg) { warn!("error sending None to screenshot: {err:?}"); @@ -1717,10 +1718,9 @@ impl Niri { // Render and send to PipeWire screencast streams. #[cfg(feature = "xdp-gnome-screencast")] { - let renderer = backend - .renderer() - .expect("renderer must not have disappeared"); - self.render_for_screen_cast(renderer, output, target_presentation_time); + backend.with_primary_renderer(|renderer| { + self.render_for_screen_cast(renderer, output, target_presentation_time); + }); } } |
