makepad/libs/linux/wayland-backend/src/core_interfaces.rs
2026-02-14 18:07:21 +01:00

108 lines
3.1 KiB
Rust

//! Core interfaces of the protocol
//!
//! This module contains hard-coded interfaces for `wl_display`, `wl_registry` and `wl_callback`.
//! These interfaces are frozen in the protocol and can never change. They are the only interfaces
//! which the backends need to be aware of in particular.
use crate::protocol::{AllowNull, ArgumentType, Interface, MessageDesc, ANONYMOUS_INTERFACE};
/// Interface `wl_display`
pub static WL_DISPLAY_INTERFACE: Interface = Interface {
name: "wl_display",
version: 1,
requests: &[
MessageDesc {
name: "sync",
since: 1,
is_destructor: false,
signature: &[ArgumentType::NewId],
child_interface: Some(&WL_CALLBACK_INTERFACE),
arg_interfaces: &[],
},
MessageDesc {
name: "get_registry",
since: 1,
is_destructor: false,
signature: &[ArgumentType::NewId],
child_interface: Some(&WL_REGISTRY_INTERFACE),
arg_interfaces: &[],
},
],
events: &[
MessageDesc {
name: "error",
since: 1,
is_destructor: false,
signature: &[
ArgumentType::Object(AllowNull::No),
ArgumentType::Uint,
ArgumentType::Str(AllowNull::No),
],
child_interface: None,
arg_interfaces: &[&ANONYMOUS_INTERFACE],
},
MessageDesc {
name: "delete_id",
since: 1,
is_destructor: false,
signature: &[ArgumentType::Uint],
child_interface: None,
arg_interfaces: &[],
},
],
c_ptr: None,
};
/// Interface `wl_registry`
pub static WL_REGISTRY_INTERFACE: Interface = Interface {
name: "wl_registry",
version: 1,
requests: &[MessageDesc {
name: "bind",
since: 1,
is_destructor: false,
signature: &[
ArgumentType::Uint,
ArgumentType::Str(AllowNull::No),
ArgumentType::Uint,
ArgumentType::NewId,
],
child_interface: None,
arg_interfaces: &[],
}],
events: &[
MessageDesc {
name: "global",
since: 1,
is_destructor: false,
signature: &[ArgumentType::Uint, ArgumentType::Str(AllowNull::No), ArgumentType::Uint],
child_interface: None,
arg_interfaces: &[],
},
MessageDesc {
name: "global_remove",
since: 1,
is_destructor: false,
signature: &[ArgumentType::Uint],
child_interface: None,
arg_interfaces: &[],
},
],
c_ptr: None,
};
/// Interface `wl_callback`
pub static WL_CALLBACK_INTERFACE: Interface = Interface {
name: "wl_callback",
version: 1,
requests: &[],
events: &[MessageDesc {
name: "done",
since: 1,
is_destructor: true,
signature: &[ArgumentType::Uint],
child_interface: None,
arg_interfaces: &[],
}],
c_ptr: None,
};