fix: keyboard crashiness
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -3464,7 +3464,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"windows-targets 0.53.2",
|
"windows-targets 0.48.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -6016,7 +6016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "5f9612d9503675b07b244922ea6f6f3cdd88c43add1b3498084613fc88cdf69d"
|
checksum = "5f9612d9503675b07b244922ea6f6f3cdd88c43add1b3498084613fc88cdf69d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"windows-targets 0.52.6",
|
"windows-targets 0.48.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -6389,7 +6389,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "waynest"
|
name = "waynest"
|
||||||
version = "0.0.25"
|
version = "0.0.25"
|
||||||
source = "git+https://github.com/verdiwm/waynest.git#418768890e3cda975caee6ce54d35284f6f6d627"
|
source = "git+https://github.com/verdiwm/waynest.git#4d52d23690b19eb1ecc742b99377acca25765ad0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bitflags 2.9.1",
|
"bitflags 2.9.1",
|
||||||
@@ -6407,7 +6407,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "waynest-macros"
|
name = "waynest-macros"
|
||||||
version = "0.0.25"
|
version = "0.0.25"
|
||||||
source = "git+https://github.com/verdiwm/waynest.git#418768890e3cda975caee6ce54d35284f6f6d627"
|
source = "git+https://github.com/verdiwm/waynest.git#4d52d23690b19eb1ecc742b99377acca25765ad0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.104",
|
"syn 2.0.104",
|
||||||
@@ -6565,7 +6565,7 @@ version = "0.1.9"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ use memfd::MemfdOptions;
|
|||||||
use slotmap::{DefaultKey, KeyData};
|
use slotmap::{DefaultKey, KeyData};
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashSet,
|
collections::HashSet,
|
||||||
|
io::Write,
|
||||||
os::{
|
os::{
|
||||||
fd::{AsRawFd, IntoRawFd},
|
fd::IntoRawFd,
|
||||||
unix::io::{FromRawFd, OwnedFd},
|
unix::io::{FromRawFd, OwnedFd},
|
||||||
},
|
},
|
||||||
sync::{Arc, Weak},
|
sync::{Arc, Weak},
|
||||||
@@ -89,18 +90,13 @@ impl Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn send_keymap(&self, client: &mut Client, keymap: &[u8]) -> Result<()> {
|
async fn send_keymap(&self, client: &mut Client, keymap: &[u8]) -> Result<()> {
|
||||||
let file = MemfdOptions::default()
|
let mut file = MemfdOptions::default()
|
||||||
.create("stardust-keymap")
|
.create("stardust-keymap")
|
||||||
.map_err(|e| waynest::server::Error::Custom(e.to_string()))?
|
.map_err(|e| waynest::server::Error::Custom(e.to_string()))?
|
||||||
.into_file();
|
.into_file();
|
||||||
file.set_len(keymap.len() as u64)?;
|
file.set_len(keymap.len() as u64)?;
|
||||||
// file.write_all(keymap)?;
|
file.write_all(keymap)?;
|
||||||
// file.flush()?;
|
file.flush()?;
|
||||||
|
|
||||||
// let map = libc::mmap(addr, len, prot, flags, fd, offset)
|
|
||||||
|
|
||||||
let mut map = unsafe { memmap2::MmapMut::map_mut(file.as_raw_fd()) }?;
|
|
||||||
map.copy_from_slice(keymap);
|
|
||||||
|
|
||||||
let fd = unsafe { OwnedFd::from_raw_fd(file.into_raw_fd()) };
|
let fd = unsafe { OwnedFd::from_raw_fd(file.into_raw_fd()) };
|
||||||
|
|
||||||
@@ -131,7 +127,6 @@ impl Keyboard {
|
|||||||
let mut old_keymap_id = self.current_keymap_id.lock().await;
|
let mut old_keymap_id = self.current_keymap_id.lock().await;
|
||||||
|
|
||||||
if *old_keymap_id != keymap_id {
|
if *old_keymap_id != keymap_id {
|
||||||
// println!("Updating keymap to {keymap_id}");
|
|
||||||
let keymap_key = DefaultKey::from(KeyData::from_ffi(keymap_id));
|
let keymap_key = DefaultKey::from(KeyData::from_ffi(keymap_id));
|
||||||
|
|
||||||
// Get keymap data and drop the lock immediately
|
// Get keymap data and drop the lock immediately
|
||||||
|
|||||||
Reference in New Issue
Block a user