Update dependencies

This commit is contained in:
2023-09-25 11:34:26 -07:00
parent 9bbf6db11c
commit 3c48ab1c7f
9 changed files with 835 additions and 598 deletions

View File

@ -50,4 +50,5 @@ log = "0.4"
nix = "0.23"
xcb = { version = "1", features = ["randr", "xkb", "xfixes", "xinput"] }
xcb-xembed = { path = "../xcb-xembed" }
xkb = { version = "0.2", features = ["x11"] }
xkb = { version = "0.3", features = ["x11"] }
xkbcommon-sys = { version = "1", feature = "x11" }

View File

@ -2,6 +2,7 @@ pub(crate) mod monitor;
pub(crate) mod pidfd;
pub mod screensaver;
pub mod subservice;
pub mod xkb_ext;
use log::{debug, info};
use xcb::{x, XidNew};

View File

@ -21,7 +21,7 @@ use std::{
};
use xcb::{randr, x, xfixes, xinput};
use bscreensaver::{screensaver::{BlankerState, CommandHandlers, Screensaver}, subservice::Subservices};
use bscreensaver::{screensaver::{BlankerState, CommandHandlers, Screensaver}, subservice::Subservices, xkb_ext};
use bscreensaver_util::{*, settings::Configuration};
const BLANKED_ARG: &str = "blanked";
@ -71,7 +71,7 @@ fn main() -> anyhow::Result<()> {
init_xfixes(&conn)?;
init_xinput(&conn)?;
init_randr(&conn)?;
xkb::x11::setup(&conn, xkb::x11::MIN_MAJOR_XKB_VERSION, xkb::x11::MIN_MINOR_XKB_VERSION, xkb::x11::NO_FLAGS)
xkb_ext::x11_setup(&conn, xkb::x11::MIN_MAJOR_XKB_VERSION, xkb::x11::MIN_MINOR_XKB_VERSION)
.map_err(|_| anyhow::anyhow!("Failed to initialize XKB extension"))?;
let helper_dir = PathBuf::from(env!("HELPER_DIR"));

28
locker/src/xkb_ext.rs Normal file
View File

@ -0,0 +1,28 @@
use std::mem::MaybeUninit;
#[inline]
pub fn x11_setup(connection: &xcb::Connection, major_version: u16, minor_version: u16) -> Result<(u16, u16, u8, u8), ()> {
let mut actual_major = MaybeUninit::uninit();
let mut actual_minor = MaybeUninit::uninit();
let mut base_event = MaybeUninit::uninit();
let mut base_error = MaybeUninit::uninit();
let ret = unsafe {
xkbcommon_sys::xkb_x11_setup_xkb_extension(
connection.get_raw_conn() as *mut _,
major_version,
minor_version,
xkbcommon_sys::XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS,
actual_major.as_mut_ptr(),
actual_minor.as_mut_ptr(),
base_event.as_mut_ptr(),
base_error.as_mut_ptr()
)
};
if ret != 1 {
Err(())
} else {
Ok(unsafe { (actual_major.assume_init(), actual_minor.assume_init(), base_event.assume_init(), base_error.assume_init()) })
}
}