dep: bump xcb to 1.6.0

switch from the deprecated API we found unsoundness in to the one introduced in 1.6.0
This commit is contained in:
En-En 2025-08-22 12:15:11 +00:00 committed by Supreeeme
parent 388d291e82
commit d759c64681
4 changed files with 6 additions and 12 deletions

4
Cargo.lock generated
View file

@ -1153,9 +1153,9 @@ dependencies = [
[[package]] [[package]]
name = "xcb" name = "xcb"
version = "1.5.0" version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1e2f212bb1a92cd8caac8051b829a6582ede155ccb60b5d5908b81b100952be" checksum = "f07c123b796139bfe0603e654eaf08e132e52387ba95b252c78bad3640ba37ea"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"libc", "libc",

View file

@ -28,7 +28,7 @@ rustix = { workspace = true, features = ["event"] }
wayland-client.workspace = true wayland-client.workspace = true
wayland-protocols = { workspace = true, features = ["client", "server", "staging", "unstable"] } wayland-protocols = { workspace = true, features = ["client", "server", "staging", "unstable"] }
wayland-server.workspace = true wayland-server.workspace = true
xcb = { version = "1.3.0", features = ["composite", "randr", "res"] } xcb = { version = "1.6.0", features = ["composite", "randr", "res"] }
wl_drm = { path = "wl_drm" } wl_drm = { path = "wl_drm" }
log = "0.4.21" log = "0.4.21"
env_logger = "0.11.3" env_logger = "0.11.3"

View file

@ -60,12 +60,6 @@ pub fn main(mut data: impl RunData) -> Option<()> {
data.created_server(); data.created_server();
let (xsock_wl, xsock_xwl) = UnixStream::pair().unwrap(); let (xsock_wl, xsock_xwl) = UnixStream::pair().unwrap();
// XCB takes responsibility for cleaning up this FD, but since connecting takes a RawFd at the
// FFI level, see (`XState::new`), `xsock_wl`'s destructor also closes the FD, leading the FD
// being closed twice. This mainly caused problems in the integration tests, where `xsock_wl`'s
// destructor would be run after the descriptor was freed, leading to an opaque abort message.
// See https://github.com/rust-x-bindings/rust-xcb/issues/282 for further explanation.
let xsock_wl = Box::leak(Box::new(xsock_wl));
// Prevent creation of new Xwayland command from closing fd // Prevent creation of new Xwayland command from closing fd
rustix::io::fcntl_setfd(&xsock_xwl, rustix::io::FdFlags::empty()).unwrap(); rustix::io::fcntl_setfd(&xsock_xwl, rustix::io::FdFlags::empty()).unwrap();

View file

@ -9,7 +9,7 @@ use bitflags::bitflags;
use log::{debug, trace, warn}; use log::{debug, trace, warn};
use std::collections::HashMap; use std::collections::HashMap;
use std::ffi::CString; use std::ffi::CString;
use std::os::fd::{AsRawFd, BorrowedFd}; use std::os::fd::BorrowedFd;
use std::rc::Rc; use std::rc::Rc;
use xcb::{x, Xid, XidNew}; use xcb::{x, Xid, XidNew};
use xcb_util_cursor::{Cursor, CursorContext}; use xcb_util_cursor::{Cursor, CursorContext};
@ -124,8 +124,8 @@ pub struct XState {
impl XState { impl XState {
pub fn new(fd: BorrowedFd) -> Self { pub fn new(fd: BorrowedFd) -> Self {
let connection = Rc::new( let connection = Rc::new(
xcb::Connection::connect_to_fd_with_extensions( xcb::Connection::connect_with_fd_and_extensions(
fd.as_raw_fd(), BorrowedFd::try_clone_to_owned(&fd).unwrap(),
None, None,
&[ &[
xcb::Extension::Composite, xcb::Extension::Composite,