Wayland协议解析 四 Wayland的所有接口

本文深入解析Wayland协议中的服务类接口,包括wl_compositor、wl_shm、wl_shell等,以及核心对象如wl_display、wl_registry。通过理解这些接口和对象,了解Wayland如何提供服务、创建窗口和管理输入设备,从而实现客户端与服务器的交互。
摘要由CSDN通过智能技术生成

在介绍这些类的时候我必须给大家把wayland的interface分个类.

  1. Global Object, 我把它叫做服务类, 就是提供给客户端各种功能的接口. 就相当于是说,对于客户端来说,我给你提供了哪些服务,你就只能通过这些服务来进行各种操作,因此,服务越多,肯定功能越多.服务类,根据实际情况是不一样的,并且可以根据需要服务端再添加更多的服务,wayland标准提供的服务接口有以下一些:
  • wl_compositor
  • wl_shm
  • wl_shell
  • wl_seat
  • wl_output
  • wl_subcompositor
  • wl_data_device_manager

 

  1. 依赖服务创建的接口类. 为什么这么说呢? 因为这样的接口对象,都是通过服务类提供的接口产生的.

 

理解wayland就要明白, wayland的所有对象都是道生一,一生二,二生三,三生万物. 通俗一点,就是wayland给你提供了道(wl_display), 后续的所有对象都是基于它产生的. 你最终能产生多少对象完全看你怎么去发挥了。

 

  1. wl_display

这个是wayland协议的核心类,它作为客户端的标识,一个wl_display对象代表着一个客户端,因为这个对象建立了和wayland服务器通信的socket,所有和服务器交互都是通过这个socket。这个也是客户端必须第一个创建的wayland对象。也就是我上面所说的‘道’。

 

wl_display接口类提供了两个请求函数,和两个事件函数。前面我说过了,关于什么是请求和事件。但是,对于wl_display这个接口对象,它的事件处理函数,是wayland源码里面提供的。用户在不修改源码的情况下,是不能再设置的。接下来说说这几个函数:

  1. sync,这个请求函数的作用是返回一个wl_callback对象,这个对象有个事件release,是当服务器端处理你这个sync请求后主动调用的,也就是说,当你调用sync之后,你设置了release事件处理函数,那么当你的release处理函数被调用的时候,就代表你当前的请求已经得到响应了。这个接口的作用是提供客户端一个确认你前面所有的请求都被处理的保证。(wayland有个接口wl_display_roundtrip就是利用了这一点,因此,你完全可以自己实现这个功能,通过这个请求。)
  2. get_registry,这个请求基本是客户端调用的第二个wayland函数(第一个是获取wl_display的函数),然后返回一个wl_registry对象,这个对象是干什么的?这个对象就是可以告诉你,wayland服务器端给你通过了哪些你可以使用的服务。这些服务才是你创建wayland窗口的核心。
  3. error 这个函数是在服务器端向客户端报错用的。
  4. delete_id,这个接口是在服务器端删除客户端对象的时候用的,目的是告诉客户端,某一个对象可以安全的delete了。

 

  1. wl_registry

这个也是wayland的核心类,这个类对象通过wl_display的请求函数得到,然后服务器端收到这个请求之后就会传递给客户端,目前可以使用的所有服务信息。客户端再根据自己的需要,通过bind这个请求函数得到服务的对象,就可以使用这些服务提供的接口了。

  1. bind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值