diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-29 09:01:54 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-29 09:09:33 +0400 |
| commit | 092420ec5a54f1cd5f4f59b75a60f5cfa7cceacd (patch) | |
| tree | 64f140f80555c65ac1fd25b371a7622f1e1ed50b /src | |
| parent | f46e93794981450a5c1ed3f114ea983427afc266 (diff) | |
| download | niri-092420ec5a54f1cd5f4f59b75a60f5cfa7cceacd.tar.gz niri-092420ec5a54f1cd5f4f59b75a60f5cfa7cceacd.tar.bz2 niri-092420ec5a54f1cd5f4f59b75a60f5cfa7cceacd.zip | |
tty: Try to proceed when can't get render node
This is a workaround that should make split display/render devices work.
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/tty.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 54dce718..a1c7ee30 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -265,8 +265,13 @@ impl Tty { .context("error opening the primary GPU DRM node")?; let primary_render_node = primary_node .node_with_type(NodeType::Render) - .context("error getting the render node for the primary GPU")? - .context("error getting the render node for the primary GPU")?; + .and_then(Result::ok) + .unwrap_or_else(|| { + warn!( + "error getting the render node for the primary GPU; proceeding anyway" + ); + primary_node + }); Ok::<_, anyhow::Error>((primary_node, primary_render_node)) })?; @@ -1747,6 +1752,14 @@ fn primary_node_from_config(config: &Config) -> Option<(DrmNode, DrmNode)> { } } else { warn!("DRM node {path:?} is not a render node"); + + // Gracefully handle misconfiguration on regular desktop systems. + if let Some(Ok(render_node)) = node.node_with_type(NodeType::Render) { + return Some((node, render_node)); + } + + warn!("could not get render node for DRM node {path:?}; proceeding anyway"); + return Some((node, node)); } } Err(err) => { |
