基于Wayland的客户端窗口坐标管理实现方法技术

技术编号:36437691 阅读:8 留言:0更新日期:2023-01-20 22:52
本发明专利技术涉及基于Wayland的客户端窗口坐标管理实现方法;基于服务端的Wayland合成器与客户端之间的Wayland协议,以及服务端的窗口坐标管理模块来实现,Wayland协议中声明有管理客户端窗口坐标的链表结构,窗口坐标管理模块中实现有客户端窗口坐标处理逻辑。本发明专利技术充分利用Wayland合成器和Wayland协议,以及客户端与合成器的通讯过程,通过对客户端发送事件的接口来实现对客户端坐标和位置的管理,代码上仅使用Wayland的链表结构,可以很方便的拓展、移植到其它窗口管理器中,实现高效开发。实现高效开发。实现高效开发。

【技术实现步骤摘要】
基于Wayland的客户端窗口坐标管理实现方法


[0001]本专利技术涉及窗口坐标管理
,具体涉及基于Wayland的客户端窗口坐标管理实现方法。

技术介绍

[0002]在Linux平台下,Cairo、Pango的运行是基于X Window的,但X Window是一个“backend”而已,并不是少它不行。同理,跨平台的GTK+、Qt也只是视X为其中所支持的后端之一,假如哪天X真的不在了,更换一个新后端,当前的GNOME、KDE也能完整的跑起来。
[0003]相对于X来说,基于Wayland的图形系统实现更容易掌握。在使用体验上,同一桌面环境在Wayland图形系统运行时,体验更好,动画更加流畅。目前X相关的开发已经放缓,社区花费更过的精力在Wayland图形系统上。与X相比,Wayland图形系统更值得国产操作系统深耕。
[0004]当前在图形系统中新建客户端时,窗口管理器会将客户端移动到合适的屏幕坐标上,使整个屏幕看上去更加有序;但当客户端没有提交需要显示的高和宽时,可能会出现窗口管理器移动位置不合适的问题;以及当新增屏幕,或者改变多屏的排列顺序时,图形系统中的整个显示区域是有变化的,这时客户端的坐标也是有变化的,如何合理高效的处理客户端坐标变化,是当前面临的一个重要目标。
[0005]中国专利技术专利(202110842166.8,支持客户端窗口坐标的轻量级wayland合成器的实现方法)涉及支持客户端窗口坐标的轻量级wayland合成器的实现方法,通过在wayland服务端和客户端之间建立从应用程序设置窗口坐标到服务端收到请求重新渲染的通信实现。该专利技术提供的支持客户端窗口坐标的轻量级wayland合成器的实现方法,通过灵活扩展wayland协议,实现客户端程序对窗口坐标的设置,满足习惯于桌面系统风格的用户使用需求。提到在Wayland合成器中使用客户端提供的坐标来渲染显示窗口,不涉及服务端的窗口坐标位置管理。
[0006]中国专利技术专利(202210383907.5,一种基于Wayland协议的浏览器应用窗口层级切换方法及装置)公开了一种基于Wayland协议的浏览器应用窗口层级切换方法及装置,涉及嵌入式L i n u x设 备 技 术 领 域 。所 述 方 法 包 括 :修改Wayland用于标记窗口所属的类别的API,通过所述API将窗口设置的分类标记为若干个层级;根据设定规则为应用窗口设置层级,然后按应用窗口的优先级高低排序;所述应用窗口的优先级首先按层级的高低进行排序,若有一个以上应用窗口的层级位于同一层级,则按层级设置时间与当前时间的接近程度排序;根据排序结果显示应用窗口。该专利技术提供的一种基于Wayland协议的浏览器应用窗口层级切换方法及装置,实现了在嵌入Linux系统中,使用Wayland显示服务的浏览器作为前端UI展示环境的情况下,可以实现自由的切换浏览器应用的窗口层级,灵活地展示前端的界面。提到在Wayland显示服务中对应用窗口进行层级排列,不涉及窗口坐标位置的管理。

技术实现思路

[0007]为解决已有技术存在的不足,本专利技术提供了一种基于Wayland的客户端窗口坐标管理实现方法,基于服务端的Wayland合成器与客户端之间的Wayland协议,以及服务端的窗口坐标管理模块来实现,Wayland协议中声明有管理客户端窗口坐标的链表结构,窗口坐标管理模块中实现有客户端窗口坐标处理逻辑;实现方法包括:步骤S1:Wayland合成器通过Wayland协议提供客户端数据来源以及用户的操作;步骤S2:窗口坐标管理模块通过合成器回调函数感知客户端的关键操作;并对客户端进行位置坐标的检测,根据不同的检测分析结果,采用不同的策略对坐标进行管理;步骤S3:Wayland合成器将管理策略下发到客户端执行。
[0008]其中,所述步骤S2中,客户端的关键操作包括关闭客户端、最小化客户端、新建客户端、移动客户端、还原客户端。
[0009]其中,所述步骤S2中,客户端的关键操作为关闭客户端或最小化客户端时,对客户端所进行的坐标管理策略包括:找出客户端的坐标在链表结构中对应的坐标管理节点,调用窗口坐标管理模块中的删除接口,将该节点删除。
[0010]其中,所述步骤S2中,客户端的关键操作为新建客户端时,对客户端所进行的坐标管理策略包括:步骤S21:获取客户端的长和宽,根据获得的长和宽,遍历链表结构,找到一个符合要求的客户端位置;步骤S22:判断与该客户端位置相邻的上一个客户端位置是否被占用;步骤S23:若未被占用,则基于当前客户端的位置直接得到需要新建的客户端的坐标;若被占用,则获取相邻的上一个客户端的坐标,通过上一个客户端的坐标与当前符合要求的客户端位置计算得到最终需要新建的客户端的坐标;步骤S24:为新建的客户端生成坐标管理节点,遍历链表结构将生成的坐标管理节点插入链表结构中的对应位置。
[0011]其中,所述步骤S2中,新建客户端操作包括常规顺序新建及补位新建,当新建客户端操作为补位新建时,对客户端所进行的坐标管理策略还包括,基于如下步骤对生成的坐标管理节点进行自检测,以判断所生成的坐标管理节点的下一个节点的坐标是否合法:步骤S25:判断所生成的坐标管理节点的下一个节点所对应的位置是否在当前插入的坐标管理节点对应的位置的同层且行和列各加一;若不是,则不处理;若是,则执行下一步;步骤S26:对比两个节点所对应的客户端的坐标是否在预定范围内,若在预定范围内,则不处理;若不在预定范围内,则调用窗口坐标管理模块中的删除接口将下一个节点删除。
[0012]其中,所述步骤S2中,客户端的关键操作为移动客户端或还原客户端时,对客户端所进行的坐标管理策略包括:步骤S2a:将被移动或还原的客户端在链表结构中的坐标管理节点删除;步骤S2b:基于客户端的坐标是否满足行列式的表达,判断客户端的坐标是否需要管理;若不需要管理,则结束当前管理策略;若需要管理,则执行下一步;步骤S2c:根据客户端当前的坐标,计算出该客户端位置并生成坐标管理节点,将
客户端所对应的坐标管理节点插入链表结构中。
[0013]其中,所述步骤S2中,客户端的关键操作为移动客户端或还原客户端时,对客户端所进行的坐标管理策略还包括,基于如下步骤对生成的坐标管理节点进行自检测,以判断所生成的坐标管理节点的下一个节点的坐标是否合法:步骤S2d:判断所生成的坐标管理节点的下一个节点所对应的位置是否在当前插入的坐标管理节点对应的位置的同层且行和列各加一;若不是,则不处理;若是,则执行下一步;步骤S2e:对比两个节点所对应的客户端的坐标是否在预定范围内,若在预定范围内,则不处理;若不在预定范围内,则调用窗口坐标管理模块中的删除接口将下一个节点删除。
[0014]本专利技术提供的基于Wayland的客户端窗口坐标管理实现方法,充分利用Wayland合成器和Wayland协议,以及客户端与合成器的通讯过程,通过对客户端发送事件的接口来实现对客户端坐标和位置的管理,代码上仅使用Wayland的链表结构,可以很方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于Wayland的客户端窗口坐标管理实现方法,其特征在于:基于服务端的Wayland合成器与客户端之间的Wayland协议,以及服务端的窗口坐标管理模块来实现,Wayland协议中声明有管理客户端窗口坐标的链表结构,窗口坐标管理模块中实现有客户端窗口坐标处理逻辑;实现方法包括:步骤S1:Wayland合成器通过Wayland协议提供客户端数据来源以及用户的操作;步骤S2:窗口坐标管理模块通过合成器回调函数感知客户端的关键操作;并对客户端进行位置坐标的检测,根据不同的检测分析结果,采用不同的策略对坐标进行管理;步骤S3:Wayland合成器将管理策略下发到客户端执行。2.根据权利要求1所述的基于Wayland的客户端窗口坐标管理实现方法,其特征在于:所述步骤S2中,客户端的关键操作包括关闭客户端、最小化客户端、新建客户端、移动客户端、还原客户端。3.根据权利要求2所述的基于Wayland的客户端窗口坐标管理实现方法,其特征在于:所述步骤S2中,客户端的关键操作为关闭客户端或最小化客户端时,对客户端所进行的坐标管理策略包括:找出客户端的坐标在链表结构中对应的坐标管理节点,调用窗口坐标管理模块中的删除接口,将该节点删除。4.根据权利要求2所述的基于Wayland的客户端窗口坐标管理实现方法,其特征在于:所述步骤S2中,客户端的关键操作为新建客户端时,对客户端所进行的坐标管理策略包括:步骤S21:获取客户端的长和宽,根据获得的长和宽,遍历链表结构,找到一个符合要求的客户端位置;步骤S22:判断与该客户端位置相邻的上一个客户端位置是否被占用;步骤S23:若未被占用,则基于当前客户端的位置直接得到需要新建的客户端的坐标;若被占用,则获取相邻的上一个客户端的坐标,通过上一个客户端的坐标与当前符合要求的客户端位置计算得到最终需要新建的客户端的坐标;步骤S24:为新建的客户端生成坐标管理节点,遍历链表结构将生成的坐标管理节点插入链表结构中的对应位置。5.根据权利要求4所述的基于Wayla...

【专利技术属性】
技术研发人员:易梓骁张铎周磊陈霖翔王勇军
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1