feat: wayland
This commit is contained in:
39
src/wayland/core/shm.rs
Normal file
39
src/wayland/core/shm.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
use std::os::fd::OwnedFd;
|
||||
|
||||
use crate::wayland::core::shm_pool::ShmPool;
|
||||
pub use waynest::server::protocol::core::wayland::wl_shm::*;
|
||||
use waynest::{
|
||||
server::{Client, Dispatcher, Result},
|
||||
wire::ObjectId,
|
||||
};
|
||||
|
||||
#[derive(Debug, Dispatcher, Default)]
|
||||
pub struct Shm;
|
||||
impl Shm {
|
||||
pub async fn advertise_formats(&self, client: &mut Client, sender_id: ObjectId) -> Result<()> {
|
||||
self.format(client, sender_id, Format::Argb8888).await?;
|
||||
self.format(client, sender_id, Format::Xrgb8888).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
impl WlShm for Shm {
|
||||
/// https://wayland.app/protocols/wayland#wl_shm:request:create_pool
|
||||
async fn create_pool(
|
||||
&self,
|
||||
client: &mut Client,
|
||||
_sender_id: ObjectId,
|
||||
pool_id: ObjectId,
|
||||
fd: OwnedFd,
|
||||
size: i32,
|
||||
) -> Result<()> {
|
||||
client.insert(pool_id, ShmPool::new(fd, size)?);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// https://wayland.app/protocols/wayland#wl_shm:request:release
|
||||
async fn release(&self, _client: &mut Client, _sender_id: ObjectId) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user