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:
parent
388d291e82
commit
d759c64681
4 changed files with 6 additions and 12 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue