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

View file

@ -60,12 +60,6 @@ pub fn main(mut data: impl RunData) -> Option<()> {
data.created_server();
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
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 std::collections::HashMap;
use std::ffi::CString;
use std::os::fd::{AsRawFd, BorrowedFd};
use std::os::fd::BorrowedFd;
use std::rc::Rc;
use xcb::{x, Xid, XidNew};
use xcb_util_cursor::{Cursor, CursorContext};
@ -124,8 +124,8 @@ pub struct XState {
impl XState {
pub fn new(fd: BorrowedFd) -> Self {
let connection = Rc::new(
xcb::Connection::connect_to_fd_with_extensions(
fd.as_raw_fd(),
xcb::Connection::connect_with_fd_and_extensions(
BorrowedFd::try_clone_to_owned(&fd).unwrap(),
None,
&[
xcb::Extension::Composite,