wayland-client-core头文件介绍

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 参数可以指定特殊标志,如是否在发送消息后销毁代理对象。
  • 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 显示服务器。如果 nameNULL,将连接到默认显示。
  • 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);
    • 设置客户端日志处理函数,用于处理客户端生成的日志信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值