wayland-client-core.h
是 Wayland 的核心客户端库头文件,这些函数主要用于构建和管理 Wayland 客户端的核心结构,如事件队列、代理对象以及与 Wayland 显示服务器的连接。下面是每个函数的解释:
事件队列相关函数
wl_event_queue_destroy(struct wl_event_queue *queue);
- 销毁一个事件队列,释放相关的资源。
代理对象(wl_proxy
)相关函数
-
wl_proxy_marshal_flags(struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, uint32_t version, uint32_t flags, ...);
- 该函数将方法调用的参数打包成一个消息,并将其发送给 Wayland 服务器。
flags
参数可以指定特殊标志,如是否在发送消息后销毁代理对象。
- 该函数将方法调用的参数打包成一个消息,并将其发送给 Wayland 服务器。
-
wl_proxy_marshal_array_flags(struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, uint32_t version, uint32_t flags, union wl_argument *args);
- 类似于
wl_proxy_marshal_flags
,但参数以数组的形式传递。
- 类似于
-
wl_proxy_marshal(struct wl_proxy *p, uint32_t opcode, ...);
- 用于将一组参数封装为一条消息并发送给服务器。
-
wl_proxy_marshal_array(struct wl_proxy *p, uint32_t opcode, union wl_argument *args);
- 与
wl_proxy_marshal
类似,但使用参数数组。
- 与
-
wl_proxy_create(struct wl_proxy *factory, const struct wl_interface *interface);
- 创建一个新的代理对象,通常用于创建一个 Wayland 资源。
-
wl_proxy_create_wrapper(void *proxy);
- 创建一个代理对象的包装器,这通常用于实现客户端的私有协议。
-
wl_proxy_wrapper_destroy(void *proxy_wrapper);
- 销毁代理对象的包装器,释放相关资源。
-
wl_proxy_marshal_constructor(struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, ...);
- 封装构造函数调用并将其发送给服务器,同时返回一个新的代理对象。
-
wl_proxy_marshal_constructor_versioned(struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, uint32_t version, ...);
- 与
wl_proxy_marshal_constructor
类似,但可以指定协议版本。
- 与
-
wl_proxy_marshal_array_constructor(struct wl_proxy *proxy, uint32_t opcode, union wl_argument *args, const struct wl_interface *interface);
- 用于数组形式的构造函数封装,并返回一个新的代理对象。
-
wl_proxy_marshal_array_constructor_versioned(struct wl_proxy *proxy, uint32_t opcode, union wl_argument *args, const struct wl_interface *interface, uint32_t version);
- 与
wl_proxy_marshal_array_constructor
类似,但可以指定协议版本。
- 与
-
wl_proxy_destroy(struct wl_proxy *proxy);
- 销毁一个代理对象,通常在它不再需要时调用。
-
wl_proxy_add_listener(struct wl_proxy *proxy, void (**implementation)(void), void *data);
- 为代理对象添加事件监听器,当 Wayland 服务器发送事件时调用。
-
wl_proxy_get_listener(struct wl_proxy *proxy);
- 获取代理对象当前的事件监听器。
-
wl_proxy_add_dispatcher(struct wl_proxy *proxy, wl_dispatcher_func_t dispatcher_func, const void * dispatcher_data, void *data);
- 为代理对象添加一个分发器,用于处理来自 Wayland 服务器的事件。
-
wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data);
- 设置与代理对象关联的用户数据。
-
wl_proxy_get_user_data(struct wl_proxy *proxy);
- 获取与代理对象关联的用户数据。
-
wl_proxy_get_version(struct wl_proxy *proxy);
- 获取代理对象所使用的协议版本。
-
wl_proxy_get_id(struct wl_proxy *proxy);
- 获取代理对象的唯一 ID。
-
wl_proxy_set_tag(struct wl_proxy *proxy, const char * const *tag);
- 设置代理对象的标记,用于调试和日志记录。
-
wl_proxy_get_tag(struct wl_proxy *proxy);
- 获取代理对象的标记。
-
wl_proxy_get_class(struct wl_proxy *proxy);
- 获取代理对象所属的类。
-
wl_proxy_set_queue(struct wl_proxy *proxy, struct wl_event_queue *queue);
- 将代理对象关联到一个特定的事件队列。
wl_display
相关函数
-
wl_display_connect(const char *name);
- 连接到 Wayland 显示服务器。如果
name
为NULL
,将连接到默认显示。
- 连接到 Wayland 显示服务器。如果
-
wl_display_connect_to_fd(int fd);
- 通过文件描述符
fd
连接到 Wayland 显示服务器。
- 通过文件描述符
-
wl_display_disconnect(struct wl_display *display);
- 断开与 Wayland 显示服务器的连接。
-
wl_display_get_fd(struct wl_display *display);
- 获取与显示服务器通信的文件描述符。
-
wl_display_dispatch(struct wl_display *display);
- 处理显示服务器发送的事件并调用相应的回调。
-
wl_display_dispatch_queue(struct wl_display *display, struct wl_event_queue *queue);
- 处理指定事件队列中的事件。
-
wl_display_dispatch_queue_pending(struct wl_display *display, struct wl_event_queue *queue);
- 处理指定队列中的所有挂起事件。
-
wl_display_dispatch_pending(struct wl_display *display);
- 处理所有挂起的事件。
-
wl_display_get_error(struct wl_display *display);
- 检查显示服务器是否有错误发生。
-
wl_display_get_protocol_error(struct wl_display *display, const struct wl_interface **interface, uint32_t *id);
- 获取与协议相关的错误信息。
-
wl_display_flush(struct wl_display *display);
- 将所有挂起的请求发送到显示服务器。
-
wl_display_roundtrip_queue(struct wl_display *display, struct wl_event_queue *queue);
- 等待服务器处理所有挂起的请求并返回结果,特定于队列。
-
wl_display_roundtrip(struct wl_display *display);
- 等待服务器处理所有挂起的请求并返回结果。
-
wl_display_create_queue(struct wl_display *display);
- 为显示连接创建一个新的事件队列。
-
wl_display_prepare_read_queue(struct wl_display *display, struct wl_event_queue *queue);
- 准备从服务器读取事件。
-
wl_display_prepare_read(struct wl_display *display);
- 类似于
wl_display_prepare_read_queue
,但不涉及特定队列。
- 类似于
-
wl_display_cancel_read(struct wl_display *display);
- 取消前一次准备读取的操作。
-
wl_display_read_events(struct wl_display *display);
- 从显示服务器读取事件。
日志相关函数
wl_log_set_handler_client(wl_log_func_t handler);
- 设置客户端日志处理函数,用于处理客户端生成的日志信息。