Seperate node from BufferBacking
Should help for moving from `BufferBacking` to types provide by iced-sctk.
This commit is contained in:
parent
a90a3a16b2
commit
6e9119a988
1 changed files with 8 additions and 22 deletions
|
|
@ -66,14 +66,8 @@ fn create_memfile() -> rustix::io::Result<OwnedFd> {
|
||||||
}
|
}
|
||||||
|
|
||||||
enum BufferBacking {
|
enum BufferBacking {
|
||||||
Shm {
|
Shm { fd: OwnedFd },
|
||||||
fd: OwnedFd,
|
Dmabuf { fd: OwnedFd, stride: u32 },
|
||||||
},
|
|
||||||
Dmabuf {
|
|
||||||
fd: OwnedFd,
|
|
||||||
node: PathBuf,
|
|
||||||
stride: u32,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Buffer {
|
pub struct Buffer {
|
||||||
|
|
@ -81,6 +75,7 @@ pub struct Buffer {
|
||||||
pub buffer: wl_buffer::WlBuffer,
|
pub buffer: wl_buffer::WlBuffer,
|
||||||
pub buffer_info: BufferInfo,
|
pub buffer_info: BufferInfo,
|
||||||
mmap: Mmap,
|
mmap: Mmap,
|
||||||
|
node: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppData {
|
impl AppData {
|
||||||
|
|
@ -113,6 +108,7 @@ impl AppData {
|
||||||
mmap,
|
mmap,
|
||||||
buffer,
|
buffer,
|
||||||
buffer_info: buffer_info.clone(),
|
buffer_info: buffer_info.clone(),
|
||||||
|
node: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -188,14 +184,11 @@ impl AppData {
|
||||||
let mmap = unsafe { Mmap::map(&fd).unwrap() };
|
let mmap = unsafe { Mmap::map(&fd).unwrap() };
|
||||||
|
|
||||||
Ok(Some(Buffer {
|
Ok(Some(Buffer {
|
||||||
backing: BufferBacking::Dmabuf {
|
backing: BufferBacking::Dmabuf { fd, stride },
|
||||||
fd,
|
|
||||||
node: node.clone(),
|
|
||||||
stride,
|
|
||||||
},
|
|
||||||
mmap,
|
mmap,
|
||||||
buffer,
|
buffer,
|
||||||
buffer_info: buffer_info.clone(),
|
buffer_info: buffer_info.clone(),
|
||||||
|
node: Some(node.clone()),
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,11 +229,7 @@ impl Buffer {
|
||||||
let pixels = match &self.backing {
|
let pixels = match &self.backing {
|
||||||
BufferBacking::Shm { .. } => self.mmap.to_vec(),
|
BufferBacking::Shm { .. } => self.mmap.to_vec(),
|
||||||
// NOTE: Only will work with linear modifier
|
// NOTE: Only will work with linear modifier
|
||||||
BufferBacking::Dmabuf {
|
BufferBacking::Dmabuf { fd, stride } => {
|
||||||
fd,
|
|
||||||
node: _,
|
|
||||||
stride,
|
|
||||||
} => {
|
|
||||||
if self.buffer_info.stride == self.buffer_info.width * 4 {
|
if self.buffer_info.stride == self.buffer_info.width * 4 {
|
||||||
self.mmap.to_vec()
|
self.mmap.to_vec()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -261,10 +250,7 @@ impl Buffer {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn node(&self) -> Option<&Path> {
|
pub fn node(&self) -> Option<&Path> {
|
||||||
match &self.backing {
|
self.node.as_deref()
|
||||||
BufferBacking::Shm { .. } => None,
|
|
||||||
BufferBacking::Dmabuf { node, .. } => Some(node),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue