pub(crate) mod wl_display {
pub(crate) mod req {
pub(crate) const SYNC: u16 = 0u16;
pub(crate) fn sync(
backend: &mut crate::Waybackend,
sender_id: crate::types::ObjectId,
callback: crate::types::ObjectId,
) -> Result<(), crate::Errno> {
let crate::Waybackend {
wire_msg_builder,
wayland_fd,
..
} = backend;
wire_msg_builder.ensure_space(wayland_fd, 3, 0)?;
unsafe {
wire_msg_builder.add_header(sender_id, SYNC, 3 * 4);
wire_msg_builder.add_new_specified_id(callback);
}
Ok(())
}
pub(crate) const GET_REGISTRY: u16 = 1u16;
pub(crate) fn get_registry(
backend: &mut crate::Waybackend,
sender_id: crate::types::ObjectId,
registry: crate::types::ObjectId,
) -> Result<(), crate::Errno> {
let crate::Waybackend {
wire_msg_builder,
wayland_fd,
..
} = backend;
wire_msg_builder.ensure_space(wayland_fd, 3, 0)?;
unsafe {
wire_msg_builder.add_header(sender_id, GET_REGISTRY, 3 * 4);
wire_msg_builder.add_new_specified_id(registry);
}
Ok(())
}
}
#[allow(non_camel_case_types)]
#[repr(u32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub(crate) enum Error {
invalid_object = 0u32,
invalid_method = 1u32,
no_memory = 2u32,
implementation = 3u32,
}
impl core::convert::TryFrom<u32> for Error {
type Error = crate::wire::Error;
#[allow(non_upper_case_globals)]
fn try_from(value: u32) -> Result<Self, Self::Error> {
const invalid_object: u32 = Error::invalid_object as u32;
const invalid_method: u32 = Error::invalid_method as u32;
const no_memory: u32 = Error::no_memory as u32;
const implementation: u32 = Error::implementation as u32;
match value {
invalid_object => Ok(Self::invalid_object),
invalid_method => Ok(Self::invalid_method),
no_memory => Ok(Self::no_memory),
implementation => Ok(Self::implementation),
otherwise => Err(crate::wire::Error::InvalidEnumDiscriminant(
"Error", otherwise,
)),
}
}
}
impl core::convert::From<Error> for u32 {
fn from(value: Error) -> u32 {
value as u32
}
}
}
pub(crate) mod wl_registry {
pub(crate) mod req {
pub(crate) const BIND: u16 = 0u16;
pub(crate) fn bind(
backend: &mut crate::Waybackend,
sender_id: crate::types::ObjectId,
name: u32,
id: crate::types::ObjectId,
interface: &str,
version: u32,
) -> Result<(), crate::Errno> {
let crate::Waybackend {
wire_msg_builder,
wayland_fd,
..
} = backend;
let byte_size = 6 + (interface.len() + 1).div_ceil(4);
wire_msg_builder.ensure_space(wayland_fd, byte_size, 0)?;
unsafe {
wire_msg_builder.add_header(sender_id, BIND, byte_size as u16 * 4);
wire_msg_builder.add_u32(name);
wire_msg_builder.add_new_unspecified_id(id, interface, version);
}
Ok(())
}
}
}