aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-11-20 11:17:31 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-11-21 07:14:27 +0300
commitcb47caba1101f6c0e718f02e1a1b9d8e579de70f (patch)
tree080156fbe9c6e66e9b1768a821090dc2f7a6134b /src/backend
parent6fcdb9242e65ed5825e7fda2a7935b412588b63a (diff)
downloadniri-cb47caba1101f6c0e718f02e1a1b9d8e579de70f.tar.gz
niri-cb47caba1101f6c0e718f02e1a1b9d8e579de70f.tar.bz2
niri-cb47caba1101f6c0e718f02e1a1b9d8e579de70f.zip
tty: Initialize primary node before others
Co-authored-by: Christian Meissl <meissl.christian@gmail.com> Co-authored-by: Scott McKendry <39483124+scottmckendry@users.noreply.github.com>
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/tty.rs24
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:?}");
}