shm: close client buffers in the cpu worker
This commit is contained in:
parent
d40e605f66
commit
ece56d91d3
7 changed files with 79 additions and 16 deletions
|
|
@ -169,7 +169,14 @@ impl JayInput {
|
|||
where
|
||||
F: FnOnce(&Rc<XkbKeymap>) -> Result<(), JayInputError>,
|
||||
{
|
||||
let cm = Rc::new(ClientMem::new(keymap, len as _, true, Some(&self.client))?).offset(0);
|
||||
let cm = Rc::new(ClientMem::new(
|
||||
keymap,
|
||||
len as _,
|
||||
true,
|
||||
Some(&self.client),
|
||||
None,
|
||||
)?)
|
||||
.offset(0);
|
||||
let mut map = vec![];
|
||||
cm.read(&mut map)?;
|
||||
self.or_error(|| {
|
||||
|
|
|
|||
|
|
@ -56,9 +56,15 @@ impl ZwpVirtualKeyboardV1RequestHandler for ZwpVirtualKeyboardV1 {
|
|||
if req.size > MAX_SIZE {
|
||||
return Err(ZwpVirtualKeyboardV1Error::OversizedKeymap);
|
||||
}
|
||||
let client_mem = ClientMem::new(&req.fd, req.size as usize - 1, true, Some(&self.client))
|
||||
.map(Rc::new)
|
||||
.map_err(ZwpVirtualKeyboardV1Error::MapKeymap)?;
|
||||
let client_mem = ClientMem::new(
|
||||
&req.fd,
|
||||
req.size as usize - 1,
|
||||
true,
|
||||
Some(&self.client),
|
||||
None,
|
||||
)
|
||||
.map(Rc::new)
|
||||
.map_err(ZwpVirtualKeyboardV1Error::MapKeymap)?;
|
||||
let mut map = vec![];
|
||||
client_mem
|
||||
.offset(0)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,13 @@ impl WlShmPool {
|
|||
Ok(Self {
|
||||
id,
|
||||
client: client.clone(),
|
||||
mem: CloneCell::new(Rc::new(ClientMem::new(&fd, len, false, Some(client))?)),
|
||||
mem: CloneCell::new(Rc::new(ClientMem::new(
|
||||
&fd,
|
||||
len,
|
||||
false,
|
||||
Some(client),
|
||||
Some(&client.state.cpu_worker),
|
||||
)?)),
|
||||
fd,
|
||||
tracker: Default::default(),
|
||||
version,
|
||||
|
|
@ -86,6 +92,7 @@ impl WlShmPoolRequestHandler for WlShmPool {
|
|||
req.size as usize,
|
||||
false,
|
||||
Some(&self.client),
|
||||
Some(&self.client.state.cpu_worker),
|
||||
)?));
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue