feat: wayland
This commit is contained in:
70
src/wayland/core/compositor.rs
Normal file
70
src/wayland/core/compositor.rs
Normal file
@@ -0,0 +1,70 @@
|
||||
use super::surface::WL_SURFACE_REGISTRY;
|
||||
use crate::wayland::core::surface::Surface;
|
||||
pub use waynest::server::protocol::core::wayland::wl_compositor::*;
|
||||
use waynest::{
|
||||
server::{Client, Dispatcher, Result, protocol::core::wayland::wl_region::WlRegion},
|
||||
wire::ObjectId,
|
||||
};
|
||||
|
||||
#[derive(Debug, Dispatcher, Default)]
|
||||
pub struct Compositor;
|
||||
impl WlCompositor for Compositor {
|
||||
/// https://wayland.app/protocols/wayland#wl_compositor:request:create_surface
|
||||
async fn create_surface(
|
||||
&self,
|
||||
client: &mut Client,
|
||||
_sender_id: ObjectId,
|
||||
id: ObjectId,
|
||||
) -> Result<()> {
|
||||
let surface = client.insert(id, Surface::new(client, id));
|
||||
WL_SURFACE_REGISTRY.add_raw(&surface);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// https://wayland.app/protocols/wayland#wl_compositor:request:create_region
|
||||
async fn create_region(
|
||||
&self,
|
||||
client: &mut Client,
|
||||
_sender_id: ObjectId,
|
||||
id: ObjectId,
|
||||
) -> Result<()> {
|
||||
client.insert(id, Region::default());
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Dispatcher, Default)]
|
||||
pub struct Region {}
|
||||
impl WlRegion for Region {
|
||||
/// https://wayland.app/protocols/wayland#wl_region:request:add
|
||||
async fn add(
|
||||
&self,
|
||||
_client: &mut Client,
|
||||
_sender_id: ObjectId,
|
||||
_x: i32,
|
||||
_y: i32,
|
||||
_width: i32,
|
||||
_height: i32,
|
||||
) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// https://wayland.app/protocols/wayland#wl_region:request:subtract
|
||||
async fn subtract(
|
||||
&self,
|
||||
_client: &mut Client,
|
||||
_sender_id: ObjectId,
|
||||
_x: i32,
|
||||
_y: i32,
|
||||
_width: i32,
|
||||
_height: i32,
|
||||
) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// https://wayland.app/protocols/wayland#wl_region:request:destroy
|
||||
async fn destroy(&self, _client: &mut Client, _sender_id: ObjectId) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user