From 6aa525c960d25c9dff951a505354eba757f565a2 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Tue, 14 Feb 2023 00:49:50 +0100 Subject: [PATCH] use private mapping (otherwise permission error on KDE) --- src/backend/wayland/producer.rs | 5 +++-- src/request.rs | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backend/wayland/producer.rs b/src/backend/wayland/producer.rs index f733676..1255784 100644 --- a/src/backend/wayland/producer.rs +++ b/src/backend/wayland/producer.rs @@ -3,7 +3,7 @@ use crate::{ request, }; -use memmap::Mmap; +use memmap::MmapOptions; use std::{ fs::File, @@ -461,7 +461,8 @@ impl Dispatch 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); } _ => (), diff --git a/src/request.rs b/src/request.rs index dc37481..2fd2c82 100644 --- a/src/request.rs +++ b/src/request.rs @@ -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>>, + data: Arc>>, } impl Server { @@ -58,7 +58,7 @@ impl Server { } pub fn listen(port: u16) -> Result<(Server, JoinHandle<()>), Box> { - let data: Arc>> = Arc::new(RwLock::new(HashMap::new())); + let data: Arc>> = 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); } }