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