diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-07-04 13:49:33 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-07-05 07:35:01 +0300 |
| commit | d2087a2cd9f30e40778861666370df56b532af63 (patch) | |
| tree | 9948e7eb0a723907a76e533e8604eee918940348 /src/dbus | |
| parent | c681198179c3cf5e2e74d3705db2b689671e13f4 (diff) | |
| download | niri-d2087a2cd9f30e40778861666370df56b532af63.tar.gz niri-d2087a2cd9f30e40778861666370df56b532af63.tar.bz2 niri-d2087a2cd9f30e40778861666370df56b532af63.zip | |
Add output ID tracking
Diffstat (limited to 'src/dbus')
| -rw-r--r-- | src/dbus/mutter_display_config.rs | 7 | ||||
| -rw-r--r-- | src/dbus/mutter_screen_cast.rs | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/dbus/mutter_display_config.rs b/src/dbus/mutter_display_config.rs index 783c2499..146174f8 100644 --- a/src/dbus/mutter_display_config.rs +++ b/src/dbus/mutter_display_config.rs @@ -57,11 +57,12 @@ impl DisplayConfig { .ipc_outputs .lock() .unwrap() - .iter() + .values() // Take only enabled outputs. - .filter(|(_, output)| output.current_mode.is_some() && output.logical.is_some()) - .map(|(c, output)| { + .filter(|output| output.current_mode.is_some() && output.logical.is_some()) + .map(|output| { // Loosely matches the check in Mutter. + let c = &output.name; let is_laptop_panel = matches!(c.get(..4), Some("eDP-" | "LVDS" | "DSI-")); // FIXME: use proper serial when we have libdisplay-info. diff --git a/src/dbus/mutter_screen_cast.rs b/src/dbus/mutter_screen_cast.rs index 4b3c2fdd..0aba084e 100644 --- a/src/dbus/mutter_screen_cast.rs +++ b/src/dbus/mutter_screen_cast.rs @@ -191,7 +191,11 @@ impl Session { ) -> fdo::Result<OwnedObjectPath> { debug!(connector, ?properties, "record_monitor"); - let Some(output) = self.ipc_outputs.lock().unwrap().get(connector).cloned() else { + let output = { + let ipc_outputs = self.ipc_outputs.lock().unwrap(); + ipc_outputs.values().find(|o| o.name == connector).cloned() + }; + let Some(output) = output else { return Err(fdo::Error::Failed("no such monitor".to_owned())); }; |
