mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-03-07 11:59:59 +03:00
use private mapping (otherwise permission error on KDE)
This commit is contained in:
@@ -3,7 +3,7 @@ use crate::{
|
||||
request,
|
||||
};
|
||||
|
||||
use memmap::Mmap;
|
||||
use memmap::MmapOptions;
|
||||
|
||||
use std::{
|
||||
fs::File,
|
||||
@@ -461,7 +461,8 @@ impl Dispatch<wl_keyboard::WlKeyboard, ()> for App {
|
||||
fd,
|
||||
size: _,
|
||||
} => {
|
||||
let mmap = unsafe { Mmap::map(&File::from_raw_fd(fd.as_raw_fd())).unwrap() };
|
||||
let fd = unsafe { &File::from_raw_fd(fd.as_raw_fd()) };
|
||||
let mmap = unsafe { MmapOptions::new().map_copy(fd).unwrap() };
|
||||
app.server.offer_data(request::Request::KeyMap, mmap);
|
||||
}
|
||||
_ => (),
|
||||
|
||||
@@ -7,7 +7,7 @@ use std::{
|
||||
thread::{self, JoinHandle}, fmt::Display,
|
||||
};
|
||||
|
||||
use memmap::Mmap;
|
||||
use memmap::MmapMut;
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub enum Request {
|
||||
@@ -30,7 +30,7 @@ impl TryFrom<[u8; 4]> for Request {
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Server {
|
||||
data: Arc<RwLock<HashMap<Request, Mmap>>>,
|
||||
data: Arc<RwLock<HashMap<Request, MmapMut>>>,
|
||||
}
|
||||
|
||||
impl Server {
|
||||
@@ -58,7 +58,7 @@ impl Server {
|
||||
}
|
||||
|
||||
pub fn listen(port: u16) -> Result<(Server, JoinHandle<()>), Box<dyn Error>> {
|
||||
let data: Arc<RwLock<HashMap<Request, Mmap>>> = Arc::new(RwLock::new(HashMap::new()));
|
||||
let data: Arc<RwLock<HashMap<Request, MmapMut>>> = Arc::new(RwLock::new(HashMap::new()));
|
||||
let listen_addr = SocketAddr::new("0.0.0.0".parse().unwrap(), port);
|
||||
let server = Server { data };
|
||||
let server_copy = server.clone();
|
||||
@@ -78,7 +78,7 @@ impl Server {
|
||||
Ok((server_copy, thread))
|
||||
}
|
||||
|
||||
pub fn offer_data(&self, req: Request, d: Mmap) {
|
||||
pub fn offer_data(&self, req: Request, d: MmapMut) {
|
||||
self.data.write().unwrap().insert(req, d);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user