1
0
Fork 0
forked from wry/wry

clientmem: store more information about mappings

This commit is contained in:
Julian Orth 2024-09-07 17:00:08 +02:00
parent 92f7cb56fd
commit 604974c927
6 changed files with 67 additions and 18 deletions

View file

@ -165,11 +165,11 @@ impl JayInput {
}
}
fn set_keymap_impl<F>(&self, keymap: &OwnedFd, len: u32, f: F) -> Result<(), JayInputError>
fn set_keymap_impl<F>(&self, keymap: &Rc<OwnedFd>, len: u32, f: F) -> Result<(), JayInputError>
where
F: FnOnce(&Rc<XkbKeymap>) -> Result<(), JayInputError>,
{
let cm = Rc::new(ClientMem::new(keymap.raw(), len as _, true)?).offset(0);
let cm = Rc::new(ClientMem::new(keymap, len as _, true, Some(&self.client))?).offset(0);
let mut map = vec![];
cm.read(&mut map)?;
self.or_error(|| {

View file

@ -56,7 +56,7 @@ impl ZwpVirtualKeyboardV1RequestHandler for ZwpVirtualKeyboardV1 {
if req.size > MAX_SIZE {
return Err(ZwpVirtualKeyboardV1Error::OversizedKeymap);
}
let client_mem = ClientMem::new(req.fd.raw(), req.size as usize - 1, true)
let client_mem = ClientMem::new(&req.fd, req.size as usize - 1, true, Some(&self.client))
.map(Rc::new)
.map_err(ZwpVirtualKeyboardV1Error::MapKeymap)?;
let mut map = vec![];

View file

@ -34,7 +34,7 @@ impl WlShmPool {
Ok(Self {
id,
client: client.clone(),
mem: CloneCell::new(Rc::new(ClientMem::new(fd.raw(), len, false)?)),
mem: CloneCell::new(Rc::new(ClientMem::new(&fd, len, false, Some(client))?)),
fd,
tracker: Default::default(),
version,
@ -82,9 +82,10 @@ impl WlShmPoolRequestHandler for WlShmPool {
return Err(WlShmPoolError::CannotShrink);
}
self.mem.set(Rc::new(ClientMem::new(
self.fd.raw(),
&self.fd,
req.size as usize,
false,
Some(&self.client),
)?));
Ok(())
}