yoda: gate iced_wgpu x11 backend behind an opt-in feature

iced_wgpu's unix block unconditionally depended on as-raw-xcb-connection,
tiny-xlib and x11rb for a DRI3 device-id fallback in
window/compositor.rs that only fires when wayland can't determine the
GPU. On a Wayland-only build this code path never runs, so the deps
are pure bloat.

Changes:
- Cargo.toml: move the 3 x11 crates to optional + new feature `x11`
  (not in default — wayland-only is the yoda target; users who need
  X11 opt in).
- window.rs: cfg-gate `mod x11;` on feature = "x11"
- window/compositor.rs: cfg-gate `use super::x11::get_x11_device_ids`
  + the or_else fallback on feature = "x11" (wrapped in a let-binding
  so the non-x11 branch compiles cleanly).

Result: iced_wgpu no longer pulls any x11 crate when built without
the feature.
This commit is contained in:
Lionel DARNIS 2026-04-24 06:24:15 +02:00 committed by Lionel DARNIS
parent a50a29b390
commit 702b6359a5
3 changed files with 14 additions and 7 deletions

View file

@ -7,7 +7,7 @@ pub mod compositor;
not(target_os = "redox")
))]
mod wayland;
#[cfg(all(unix, not(target_os = "macos"), not(target_os = "redox")))]
#[cfg(all(unix, feature = "x11", not(target_os = "macos"), not(target_os = "redox")))]
mod x11;
pub use compositor::Compositor;

View file

@ -16,7 +16,7 @@ use crate::{Engine, Renderer};
not(target_os = "redox")
))]
use super::wayland::get_wayland_device_ids;
#[cfg(all(unix, not(target_os = "macos"), not(target_os = "redox")))]
#[cfg(all(unix, feature = "x11", not(target_os = "macos"), not(target_os = "redox")))]
use super::x11::get_x11_device_ids;
use std::future::Future;
@ -72,8 +72,10 @@ impl Compositor {
not(target_os = "redox")
))]
let ids = compatible_window.as_ref().and_then(|window| {
get_wayland_device_ids(window)
.or_else(|| get_x11_device_ids(window))
let w = get_wayland_device_ids(window);
#[cfg(feature = "x11")]
let w = w.or_else(|| get_x11_device_ids(window));
w
});
#[cfg(all(