diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/tty.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index daf2d532..1abbc2a2 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -507,7 +507,29 @@ impl Tty { } pub fn init(&mut self, niri: &mut Niri) { - for (device_id, path) in self.udev_dispatcher.clone().as_source_ref().device_list() { + let udev = self.udev_dispatcher.clone(); + let udev = udev.as_source_ref(); + + // Initialize the primary node first as later nodes might depend on the primary render node + // being available. + if let Some((primary_device_id, primary_device_path)) = udev + .device_list() + .find(|&(device_id, _)| device_id == self.primary_node.dev_id()) + { + if let Err(err) = self.device_added(primary_device_id, primary_device_path, niri) { + warn!( + "error adding primary node device, display-only devices may not work: {err:?}" + ); + } + } else { + warn!("primary node is missing, display-only devices may not work"); + }; + + for (device_id, path) in udev.device_list() { + if device_id == self.primary_node.dev_id() { + continue; + } + if let Err(err) = self.device_added(device_id, path, niri) { warn!("error adding device: {err:?}"); } |
