diff options
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())); }; |
