The Wayland Protocol —新手入门学习(二)

目录 

1、wayland协议理解

2、wayland.xml

(1)解析上面的xml可以分为以下标签

(2)Wayland协议文件还有以下标签

(3)Wayland的标签解释

(4)实例解释

(5)“翻译”


The Wayland Protocol —新手入门学习(一)

1、wayland协议理解

        Wayland 是一个为了替代 Xorg 服务而设计和构建的,用于类 Unix 系统的下一代显示服务。并自称是将应用程序窗口显示在用户屏幕上的最佳方法。

        Wayland协议,通俗来讲就是一个定义怎么来进行窗口管理的协议。窗口管理讲的是什么?我们了解在Windows操作系统上有很多很多的应用程序,我们去启动应用程序之后,一般会弹出一个该应用程序的窗口。我们在创建窗口的时候都是必须调用指定的接口才可以创建,这个接口就相当于窗口管理的协议提供的一个接口。

        各种各样的接口在不同的操作系统上是不一样的,如果我们要创建窗口,在不同的操作系统上就需要不同的代码,因此,跨平台就是件很麻烦的事情。然而,在这种情况下,涌现出了大量跨平台的框架,他们把和操作系统相关的创建窗口的接口封装了起来,然后通过提供统一的接口给用户。这样一来,用户就可以使用相同的代码在不同的操作系统上创建出窗口,比如Qt等。

        为什么我们需要窗口管理, 我们都知道,窗口都是通过显示器来显示给我们看的,然后通过鼠标键盘等外设来操作的,但这些东西都只有一份,如果现在有两个进程都需要显示出来,他们都去争夺这个显示屏去绘制,最终出来不就是花屏吗?因为这两个进程是不知道对方的存在,不知道对方现在占用了哪里,因此,需要一个东西来协调才能让多个进程完美的同时显示出来,这个就是窗口管理的作用。

2、wayland.xml

        Wayland 协议通过 XML 文件进行定义。如果定位到并在编辑器中打开了 "wayland.xml" 文件,你将会发现 Wayland 核心协议的 XML 规范。这是一个高级协议。

git clone https://gitlab.freedesktop.org/wayland/wayland.git

wayland是一种窗口管理的协议,它和x11协议是同等的。那么,是什么样的协议呢?如下: 

         上面的片段是从wayland.xml里面截取出来的,以此来介绍。 Wayland的核心协议全部在这个wayland.xml这个xml文件里面。也有很多wayland的扩展协议,是为了实现一些其他目的而添加,当然,如果我们学了这些协议也可以自己添加一些协议内容。然后去实现一些功能。

(1)解析上面的xml可以分为以下标签

Interface :接口用于事先定义请求和事件的列表,与每个请求相关联的操作码和解码消息所需的签名也都来自于其。
Request :客户端使用它来表示表层的某些部分已经更改并需要重新绘制。请求,客户端主动调用的接口,实际就是个函数。
Event:请求是对于客户端到服务端而言的,反之服务端可以给客户端发回送事件消息。事件,服务器端主动调用的接口,实际就是个函数。

(2)Wayland协议文件还有以下标签

Description :描述,可能是接口的描述,请求的描述,事件的描述等。
Arg :参数,请求或者事件的参数。
Enum :枚举,用来更形象的代表一些值。
Entry :枚举的成员。

(3)Wayland的标签解释

        Wayland协议就是通过这样一个文件(wayland/protocol/wayland.xml):描述一个客户端和服务器端相互知道的调用接口。 转换成C++的方式来理解这些肯定会容易一些。

        首先,这些标签是有包含关系的,一个wayland协议xml文件里包含一个或多个interface,一个interface里面可能包含一个或多个request和event,,有些可能包含enum,也可能没有,根据实际情况。其中最简单的enum最终就是直接转换成C语言的枚举类型,Entry即是它的成员。

(4)实例解释

eg1:

        wayland.xml协议文件里面定义一个类wl_buffer,该类的作用可以通过description标签的描述知道。然后,该类有两个成员函数,一个是request(destroy),还有一个event(release)。这两个函数也可以通过description标签的描述该函数的作用。

eg2:

        一个函数定义的组成一般都有参数,这个arg标签就是用来描述参数的,所以有些request和event包含arg标签,用来描述他的参数。

一个参数可能有5个属性:

Name (参数的名字)
Type (参数的类型)
Interface (参数的类型)

Allow-null (是否可以为空)
Summary (描述参数是做什么的)

通过上面的解释来分析buffer、x、y这个参数:

1、buffer 是一个wl_buffer类型的指针参数。名字是buffer,并且这个指针可以为空, 对这个指针参数的描述是” buffer of surface contents”。

2、X是一个int类型的参数,名字是x,,对这个参数的描述是” surface-local x coordinate”。

3、Y是一个int类型的参数,名字是y,对这个参数的描述是” surface-local y coordinate”。

(5)“翻译”

        最后把上面的xml翻译成:

 attach(wl_buffer *buffer, int x, int y),

        这样有点问题,一个函数必须有返回值,但是wayland协议里面没有描述返回值的,因此,大部分函数的返回值都是void,这个就是有一种arg类型是new_id的会作为函数的返回值类型。因此上面的函数最终会转换成:

void wl_surface_attach(struct wl_surface *wl_surface, struct wl_buffer *buffer, int32_t x, int32_t y)

        问:为什么又多了个参数?        

        答:wayland协议在翻译协议文件的时候,会给所有的函数添加一个默认的参数,就是它所在的interface,作为第一个参数传入进去,就相当于给一个类成员函数传递this指针一样。告诉是哪个具体对象调用的这个接口。

ITC小浪花、
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Wayland协议解析 Wayland中的数据结构解析
xiaoyan_yt的博客
10-17 2890
为了更好的学习wayland,我们可以先学习wayland中定义的一些数据结构.因为贯穿wayland的所有东西都是基于这些数据结构.   首先介绍wl_array struct wl_array { /** Array size */ size_t size; /** Allocated space */ size_t alloc; /** Array data */ void ...
ocaml-wayland:纯OCaml Wayland协议实现
03-05
纯OCaml Wayland协议库 状态:原型制作 Wayland是一种通信协议,旨在在单台计算机上的进程之间使用。 它主要由图形应用程序(客户端)用于与显示服务器进行通信,但是有关该协议的任何信息都不特定于图形,并且可以...
wayland 源码
10-17
wayland 最新源码 1.12.0
Wayland 协议定义及分发
u012794472的专栏
05-19 1317
1. 协议定义: Wayland核心协议是通过protocol/wayland.xml这个文件定义的。它通过wayland_scanner这个程序扫描后会生成wayland-protocol.c, wayland-client-protocol.h和wayland-server-protocol.h三个文件。wayland-client-protocol.h是给Client用的;wayland-server-protocol.h是给Server用的; wayland-protocol.c描述了接口,Cli
探索未来桌面:强力推荐 sway —— 高效轻量的 Wayland 组合器
最新发布
gitblog_01031的博客
08-10 568
探索未来桌面:强力推荐 sway —— 高效轻量的 Wayland 组合器 项目地址:https://gitcode.com/gh_mirrors/swa/sway 项目介绍 sway 是一款兼容 i3 的 Wayland 组合器,专为那些追求高效且对现代图形系统有深入理解的用户而设计。这个项目不仅旨在提供一个稳定的桌面环境,还致力于通过开源和社区驱动的方式推动 Linux 桌面的发展。从初学者到...
wayland入门学习
技术笔记
03-30 4951
The Wayland Protocol(自译中文版)这本书能快速深入理解Wayland的概念、设计和实现,并为您提供构建自行构建Wayland客户端和服务端所需的工具。通过简单的例子,快速去理解wayland的设计和原理。 下面是从第四节开始的wayland和server的例子。 编译 例子链接 # ubuntu编译用到的命令 cc -o server server.c -lwayland-server cc -o client client.c -lwayland-client cc -o client
The Wayland Protocol新手入门学习(一)
江湖小浪花的博客
02-10 816
Wayland是什么呢?它是X Window?还是要取代X Window?Linux桌面/移动会因此有什么变化?在本篇中,我将回顾历史,通过简易的文字,来先回顾一下X Window,从而继续解答Wayland——古老的X Window和现代的桌面技术。X Window在1984年由MIT研发,它的设计哲学之一是:提供机制,而非策略。
WaylandWayland协议说明
林多
11-07 2804
Wayland协议说明 Wayland基本概念 什么是wayland? 它是一种窗口管理协议。简单理解,wayland是一套Display Server与Display Client间通信的协议。Wayland定义了一套标准协议,并规定这套协议中的核心对象(https://wayland.freedesktop.org/docs/html/ch04.html#sect-Protocol-Interfaces)。 Weston是什么?‘ Wayland只是一套协议,一套规范。Weston是wayland
Wayland协议了解
Linux Openharmony Android Graphics Stack!
04-21 8976
一 什么是wayland Wayland协议,通俗的讲就是一个定义怎么来进行窗口管理的协议。 什么叫窗口管理呢? 我们知道在Windows操作系统上有很多很多的应用程序,在启动该应用程序之后,一般会弹出一个该应用程序的窗口。 这个窗口是怎么产生的? 太深入理解没必要,我们只需要知道,我们在创建窗口的时候都是必须调用指定的接口才可以创建,是吧? 这个接口就相当于窗口管理的协议提供的接口。 各种形形色色的接口在不同的操作系统上是不一样的,因此如果我们要创建窗口,在不同的操作系统上就需要不同的代码,因此,
ft-wl-fwk是 Wayland-protocol 的实现 该实现基于方天
02-27
Wayland-protocol是一种用于构建图形用户界面(GUI)的通信协议,它定义了窗口系统的基础,使得应用程序可以与显示服务器进行交互。方天,可能是这个实现的特定名称或者是项目的一部分,但具体信息需要进一步查阅...
wayland v1.3协议说明
02-01
Wayland 是一种显示服务器协议,由Kristian Høgsberg创建并由Intel Corporation持有版权。该协议的主要目标是提供一种让显示服务器(如Wayland compositor)与客户端应用程序进行通信的方式,同时也包括一个C语言库...
wayland-rs:Wayland协议(客户端和服务器)的Rust实现
02-05
wayland-rs:Wayland协议(客户端和服务器)的Rust实现
wayland-explorer:轻松浏览和阅读Wayland协议文档
04-06
韦兰探险家 轻松浏览和阅读Wayland协议文档。 这个项目的动机 Wayland协议以XML文件的形式发布。 虽然规范也可以HTML格式提供以阅读,但并非核心协议一部分的所有却并非如此。 该项目试图通过解析XML协议文件并将其转换为HTML来填补这一空白,以使其易于在网络上浏览和阅读。 技术领域 内置 :sparkling_heart: 使用React, 和 。 免责声明 该项目与Wayland官方项目无关。
Wayland协议-官网翻译
pk0127的博客
06-06 491
文章目录版权申明简介目录说明 Kristian Høgsberg Intel Corporation krh@bitplanet.net 版权申明 版权所有 © 2012 Kristian Høgsberg,英特尔公司 特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售软件的副本,并允许向其提供软件的人员这样做,但须符合以下条件: 上述版权声明和本许可声明(包括下一段)应包含在本软件的所有副本或重要部
Wayland协议解析
sunxiaopengsun的专栏
11-11 605
Wayland协议解析 一 什么是Wayland Wayland协议解析 Wayland中的数据结构解析 Wayland协议解析 三 Wayland的工作原理 Wayland协议解析 四 Wayland的所有接口 Wayland协议解析 五 Wayland窗口创建流程 Wayland协议解析_xiaoyan_yt的博客-CSDN博客_wayland协议 ...
wayland学习
LK1993的博客
04-11 1480
最近正在研究 Wayland 的实现,为此准备写一个关于 Wayland 实现分析的一系列文章,目的主要有两个:一是加强自己的理解;是供同好观摩指教讨论。下面是一个写作提纲(也可以看作是一个写作计划): 1. Wayland 简介 主要介绍 Wayland 是什么、Wayland 架构、Wayland 与 X 的比较等。 2. 知识背景 主要介绍 Linux 下的图
wayland protocal and programming
maze的专栏
07-24 4266
Written in 2012 before wayland 1.0 released, most of them are outdated as in May 2017. wayland是异步的面向对象的协议,所有请求都是在某个对象上的方法调用。每个对象实现一个接口,描述一系列操作。请求包含对象id,唯一标识服务器上的一个对象,还包括opcode,指出在对象上调用的方法。server向clie...
Wayland 1.17 发布,协议更新和其他改进
weixin_33895695的博客
03-23 152
开发四年只会写业务代码,分布式高并发都不会还做程序员? Wayland 1.17 发布了,这是自去年8月以来的首次官方...
写文章

热门文章

  • DEB打包流程—新手入门(附自动化打包shell源码) 11489
  • ATE测试—新手入门学习(一)【1-5】 10839
  • ATE测试—新手入门学习(二)【6-10】 4616
  • ATE测试—新手入门学习(三)【11-14】 4596
  • UFS协议—新手快速入门(一)【1-4】 3614

分类专栏

  • 生活感悟 11篇
  • C++ 实践心得 1篇
  • ALPG存储器测试 6篇
  • UFS协议 5篇

最新评论

  • DEB打包流程—新手入门(附自动化打包shell源码)

    ITC小浪花、: 你目前已经打包完成并且安装了吗?安装后就可以运行

  • DEB打包流程—新手入门(附自动化打包shell源码)

    我要强我要强: 请问为什么我不能在任意目录直接运行helloworld,sh

  • UFS协议—新手快速入门(五)【11-13】

    初夏543: 大佬,知道efa吗。

最新文章

  • 2024/10/14随笔
  • C++中全局变量的处理方法心得(单例、访问器、修改器)
  • UFS协议—新手快速入门(五)【11-13】
2024年23篇
2023年4篇
2022年6篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITC小浪花、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家江西玻璃钢花盆多少钱马鞍山玻璃钢雕塑厂电话青岛玻璃钢雕塑摆件销售云南肖像玻璃钢景观雕塑玻璃钢花盆工艺技术运城铸铜玻璃钢景观雕塑厂家福建常见商场美陈订购天水户外玻璃钢雕塑哪家好西安环保玻璃钢雕塑优势菏泽园林校园玻璃钢景观雕塑江苏玻璃钢雕塑设计及定制玻璃钢骆驼雕塑西安酒店玻璃钢造型雕塑制作浙江户外商场美陈现价无锡定做玻璃钢造型雕塑福建玻璃钢花盆研发公司安庆学校玻璃钢雕塑定制湖北主题公园玻璃钢雕塑艺术小品山东户外玻璃钢雕塑销售电话博物馆玻璃钢雕塑章鱼商场美陈定制召陵玻璃钢雕塑厂家广安受欢迎的成都商场美陈伦教玻璃钢人物雕塑精工打造广东大型商场创意商业美陈公司武汉校园玻璃钢雕塑定做价格南昌商场开业美陈三亚玻璃钢卡通雕塑济源不锈钢人物玻璃钢彩绘雕塑玻璃钢蘑菇雕塑生产香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化