1//! Core interfaces of the protocol
2//!
3//! This module contains hard-coded interfaces for `wl_display`, `wl_registry` and `wl_callback`.
4//! These interfaces are frozen in the protocol and can never change. They are the only interfaces
5//! which the backends need to be aware of in particular.
6
7use crate::protocol::{AllowNull, ArgumentType, Interface, MessageDesc, ANONYMOUS_INTERFACE};
8
9/// Interface `wl_display`
10pub static WL_DISPLAY_INTERFACE: Interface = Interface {
11 name: "wl_display",
12 version: 1,
13 requests: &[
14 MessageDesc {
15 name: "sync",
16 since: 1,
17 is_destructor: false,
18 signature: &[ArgumentType::NewId],
19 child_interface: Some(&WL_CALLBACK_INTERFACE),
20 arg_interfaces: &[],
21 },
22 MessageDesc {
23 name: "get_registry",
24 since: 1,
25 is_destructor: false,
26 signature: &[ArgumentType::NewId],
27 child_interface: Some(&WL_REGISTRY_INTERFACE),
28 arg_interfaces: &[],
29 },
30 ],
31 events: &[
32 MessageDesc {
33 name: "error",
34 since: 1,
35 is_destructor: false,
36 signature: &[
37 ArgumentType::Object(AllowNull::No),
38 ArgumentType::Uint,
39 ArgumentType::Str(AllowNull::No),
40 ],
41 child_interface: None,
42 arg_interfaces: &[&ANONYMOUS_INTERFACE],
43 },
44 MessageDesc {
45 name: "delete_id",
46 since: 1,
47 is_destructor: false,
48 signature: &[ArgumentType::Uint],
49 child_interface: None,
50 arg_interfaces: &[],
51 },
52 ],
53 c_ptr: None,
54};
55
56/// Interface `wl_registry`
57pub static WL_REGISTRY_INTERFACE: Interface = Interface {
58 name: "wl_registry",
59 version: 1,
60 requests: &[MessageDesc {
61 name: "bind",
62 since: 1,
63 is_destructor: false,
64 signature: &[
65 ArgumentType::Uint,
66 ArgumentType::Str(AllowNull::No),
67 ArgumentType::Uint,
68 ArgumentType::NewId,
69 ],
70 child_interface: None,
71 arg_interfaces: &[],
72 }],
73 events: &[
74 MessageDesc {
75 name: "global",
76 since: 1,
77 is_destructor: false,
78 signature: &[ArgumentType::Uint, ArgumentType::Str(AllowNull::No), ArgumentType::Uint],
79 child_interface: None,
80 arg_interfaces: &[],
81 },
82 MessageDesc {
83 name: "global_remove",
84 since: 1,
85 is_destructor: false,
86 signature: &[ArgumentType::Uint],
87 child_interface: None,
88 arg_interfaces: &[],
89 },
90 ],
91 c_ptr: None,
92};
93
94/// Interface `wl_callback`
95pub static WL_CALLBACK_INTERFACE: Interface = Interface {
96 name: "wl_callback",
97 version: 1,
98 requests: &[],
99 events: &[MessageDesc {
100 name: "done",
101 since: 1,
102 is_destructor: true,
103 signature: &[ArgumentType::Uint],
104 child_interface: None,
105 arg_interfaces: &[],
106 }],
107 c_ptr: None,
108};
109