On Wayland, closing a window in the brief gap between requesting a portal file dialog and ashpd exporting the window's surface (used to parent the dialog) crashed Zed with `Unknown opcode 0 for object <anonymous>@0` ([ZED-9KB](https://zed-dev.sentry.io/issues/7568720776/)). When the export request fails because the surface is already dead, wayland-scanner's generated code silently returns an inert proxy, and ashpd's `Drop` impl later sends `destroy` on it — which wayland-backend 0.3.11 answers with a panic, because it looks up the request opcode before checking whether the object is null. wayland-backend 0.3.15 fixes this ([Smithay/wayland-rs#890](https://github.com/Smithay/wayland-rs/issues/890)) by returning an error instead, which the generated destructor discards, so the drop becomes a harmless no-op. This bumps the lockfile to 0.3.15 and raises the version floor in `gpui_linux` so the fix can't silently regress via a fresh lockfile. Closes FR-100 Release Notes: - Fixed a crash on Linux (Wayland) when a window was closed just as a file dialog was being opened.
135 lines
3.3 KiB
TOML
135 lines
3.3 KiB
TOML
[package]
|
|
name = "gpui_linux"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
license = "Apache-2.0"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
path = "src/gpui_linux.rs"
|
|
|
|
[features]
|
|
default = ["wayland", "x11"]
|
|
test-support = ["gpui/test-support"]
|
|
wayland = [
|
|
"bitflags",
|
|
"gpui_wgpu",
|
|
"ashpd/wayland",
|
|
|
|
"calloop-wayland-source",
|
|
"wayland-backend",
|
|
"wayland-client",
|
|
"wayland-cursor",
|
|
"wayland-protocols",
|
|
"wayland-protocols-plasma",
|
|
"wayland-protocols-wlr",
|
|
"filedescriptor",
|
|
"xkbcommon",
|
|
"open",
|
|
"gpui/wayland",
|
|
]
|
|
x11 = [
|
|
"gpui_wgpu",
|
|
"ashpd",
|
|
|
|
"as-raw-xcb-connection",
|
|
"x11rb",
|
|
"xkbcommon",
|
|
"xim",
|
|
"x11-clipboard",
|
|
"filedescriptor",
|
|
"open",
|
|
"scap?/x11",
|
|
]
|
|
screen-capture = [
|
|
"gpui/screen-capture",
|
|
"scap",
|
|
]
|
|
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
|
|
accesskit.workspace = true
|
|
accesskit_unix.workspace = true
|
|
anyhow.workspace = true
|
|
bytemuck = "1"
|
|
collections.workspace = true
|
|
image.workspace = true
|
|
futures.workspace = true
|
|
gpui.workspace = true
|
|
gpui_util.workspace = true
|
|
gpui_wgpu = { workspace = true, optional = true, features = ["font-kit"] }
|
|
http_client.workspace = true
|
|
itertools.workspace = true
|
|
libc.workspace = true
|
|
log.workspace = true
|
|
parking_lot.workspace = true
|
|
pathfinder_geometry = "0.5"
|
|
pollster.workspace = true
|
|
profiling.workspace = true
|
|
smallvec.workspace = true
|
|
smol.workspace = true
|
|
strum.workspace = true
|
|
url.workspace = true
|
|
uuid.workspace = true
|
|
|
|
# Always used
|
|
oo7 = { version = "0.6", default-features = false, features = [
|
|
"async-std",
|
|
"native_crypto",
|
|
] }
|
|
calloop = "0.14.3"
|
|
raw-window-handle = "0.6"
|
|
|
|
# Used in both windowing options
|
|
ashpd = { workspace = true, optional = true }
|
|
swash = { version = "0.2.6" }
|
|
bitflags = { workspace = true, optional = true }
|
|
filedescriptor = { version = "0.8.2", optional = true }
|
|
open = { version = "5.2.0", optional = true }
|
|
xkbcommon = { version = "0.8.0", features = ["wayland", "x11"], optional = true }
|
|
|
|
# Screen capture
|
|
scap = { workspace = true, optional = true }
|
|
|
|
# Wayland
|
|
calloop-wayland-source = { version = "0.4.1", optional = true }
|
|
wayland-backend = { version = "0.3.15", features = [
|
|
"client_system",
|
|
"dlopen",
|
|
], optional = true }
|
|
wayland-client = { version = "0.31.11", optional = true }
|
|
wayland-cursor = { version = "0.31.11", optional = true }
|
|
wayland-protocols = { version = "0.32.9", features = [
|
|
"client",
|
|
"staging",
|
|
"unstable",
|
|
], optional = true }
|
|
wayland-protocols-plasma = { version = "0.3.9", features = [
|
|
"client",
|
|
], optional = true }
|
|
wayland-protocols-wlr = { version = "0.3.9", features = [
|
|
"client",
|
|
], optional = true }
|
|
|
|
# X11
|
|
as-raw-xcb-connection = { version = "1", optional = true }
|
|
x11rb = { version = "0.13.1", features = [
|
|
"allow-unsafe-code",
|
|
"xkb",
|
|
"randr",
|
|
"xinput",
|
|
"cursor",
|
|
"resource_manager",
|
|
"sync",
|
|
"dri3",
|
|
], optional = true }
|
|
# WARNING: If you change this, you must also publish a new version of zed-xim to crates.io
|
|
xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8", features = [
|
|
"x11rb-xcb",
|
|
"x11rb-client",
|
|
], package = "zed-xim", version = "0.4.0-zed", optional = true }
|
|
x11-clipboard = { version = "0.9.3", optional = true }
|