Wayland环境下X应用的截图方法、系统及介质技术方案

技术编号:35541573 阅读:11 留言:0更新日期:2022-11-09 15:10
本发明专利技术公开了一种Wayland环境下X应用的截图方法、系统及介质,本发明专利技术Wayland环境下X应用的截图方法包括:通过Xwayland截获X11应用发起针对指定的截图接口的调用请求;通过Xwayland判断该调用请求是否为获取根窗口内容,若为获取根窗口内容,则通过Xwayland从Wayland合成器获取当前屏幕图像并返回给X11应用,从而在发现X11应用需要获取窗口或屏幕内容时从Wayland合成器中获取当前的显示图像然后返回给X11应用,能够解决wayland环境下通过X11协议获取窗口或屏幕内容类应用不能使用的问题。的问题。的问题。

【技术实现步骤摘要】
Wayland环境下X应用的截图方法、系统及介质


[0001]本专利技术涉Linux操作系统的X应用开发领域,具体涉及一种Wayland环境下X应用的截图方法、系统及介质。

技术介绍

[0002]Wayland是一个协议(Protocol),它定义了Wayland客户端如何与Wayland合成器通讯。鉴于Wayland协议相对X11协议的优势,特别是在高分辨率、高刷新率方面提供的更好支持,开源社区已经全面转向Wayland进行开发,各大系统发行版本也开始使用Wayland作为默认的图形显示协议。但一方面大多数用于Linux的游戏、图形密集型等专业应用程序仍是使用X11编写,只能通过Xwayland(Wayland协议的X应用兼容服务模块)进行兼容,Xwayland用于提供Wayland环境下X应用(基于X11协议开发的各种运行于X Window system的应用)兼容运行的一个环境,可以看作是XServer的一个实现。与其他XServer实现的区别在于,在Xwayland底层,通过Wayland协议与Wayland合成器通信,Xwayland可以看作是一个Wayland客户端;另一方面对于大量的基于GTK2、Qt4、X11等开发的应用需要重新基于Wayland重构,否则只能通过Xwayland进行兼容运行。在Wayland环境下,X应用(X11 应用程序)通过XWayland兼容运行的架构如图1所示。Xwayland是XServer的一个实现,X应用连接到 Xwayland,跟连接到真实的X服务器一样,Xwayland 负责处理所有 X11 请求。另一方面,Xwayland 同时也是一个连接到 Wayland 合成器的 Wayland 客户端。X11 窗口管理器 (XWM) 是 Wayland 合成器的一个组成部分。 XWM 使用通常的 X11 窗口管理协议来管理 Xwayland 中的所有 X11 窗口。同时XWM 充当 Xwayland 窗口状态和 Wayland 合成器的窗口管理器 (WWM) 之间的桥梁。这样 WWM 可以管理所有窗口,包括原生 Wayland 和 X11 (Xwayland) 窗口。wayland合成器同时也是一个X11客户端。
[0003]但是,使用Xwayland进行X11应用兼容存在不少问题:1、Xwayland是一个wayland客户端,它接收合成器发送过来的输入事件,并转发给对应X11窗口,同时将X11窗口的内容提交给合成器进行显示。2、最终的显示图形由wayland合成器生成,Xwayland中不存在途径获取当前的屏幕显示内容。因为上述两点原因,通过X11协议获取窗口或屏幕内容的这类软件将不能正常使用,比如截图、录屏、远程桌面等。

技术实现思路

[0004]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种Wayland环境下X应用的截图方法、系统及介质,本专利技术能够解决wayland环境下通过X11协议获取窗口或屏幕内容类应用不能使用的问题。
[0005]为了解决上述技术问题,本专利技术采用的技术方案为:一种Wayland环境下X应用的截图方法,包括:S101,通过Xwayland截获X11应用发起针对指定的截图接口的调用请求;S102,通过Xwayland判断该调用请求是否为获取根窗口内容,若为获取根窗口内
容,则跳转步骤S103;S103,通过Xwayland从Wayland合成器获取当前屏幕图像并返回给X11应用。
[0006]可选地,步骤S101中指定的截图接口是指GetImage函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中定制的第73项处理函数,来截获X11应用发起针对GetImage函数接口的调用请求。
[0007]可选地,步骤S101中指定的截图接口是指ShmGetImage函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中的MIT

SHM扩展处理函数中定制的分发函数,来截获X11应用发起针对ShmGetImage函数接口的调用请求。
[0008]可选地,步骤S101中指定的截图接口是指CopyArea函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中定制的第62项处理函数,来截获X11应用发起针对CopyArea函数接口的调用请求。
[0009]可选地,步骤S103包括:S201,通过Xwayland向Wayland合成器发起获取当前屏幕图像的请求并开始计时;S202,判断Xwayland在指定时间内是否从Wayland合成器获取当前屏幕图像成功,若从Wayland合成器获取当前屏幕图像成功,则直接将从Wayland合成器获取的当前屏幕图像返回给X11应用;否则将最近一次从Wayland合成器获取的当前屏幕图像返回给X11应用。
[0010]可选地,步骤S202中从Wayland合成器获取当前屏幕图像成功时,从Wayland合成器获取的当前屏幕图像被存储在指定的共享内存空间中,使得在从Wayland合成器获取当前屏幕图像失败时所述共享内存空间中仍然存储有最近一次从Wayland合成器获取的当前屏幕图像,所述将最近一次从Wayland合成器获取的当前屏幕图像返回给X11应用是指将所述共享内存空间中存储的最近一次从Wayland合成器获取的当前屏幕图像当前屏幕图像返回给X11应用。
[0011]可选地,步骤S102中还包括在该调用请求非获取根窗口内容时,通过Xwayland直接将当前窗口内容并返回给X11应用。
[0012]可选地,步骤S102通过Xwayland判断该调用请求是否为获取根窗口内容包括:获取该调用请求所需获取的窗口内容,将该调用请求所需获取的窗口内容与在全局变量中保存的根窗口进行比较以判断两者是否一致,如果两者一致则判定该调用请求为获取根窗口内容,否则判定该调用请求非获取根窗口内容;所述全局变量中保存的根窗口是指Xwayland在初始化时所创建的零大小的根窗口。
[0013]此外,本专利技术还提供一种Wayland环境下X应用的截图系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述Wayland环境下X应用的截图方法。
[0014]此外,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述Wayland环境下X应用的截图方法。
[0015]和现有技术相比,本专利技术主要具有下述优点:获取窗口或屏幕内容的X应用,通常需要截取根(root)窗口内容并及时返回数据,而Xwayland中无法获取屏幕显示内容,为了
解决上述问题,本专利技术Wayland环境下X应用的截图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Wayland环境下X应用的截图方法,其特征在于,包括:S101,通过Xwayland截获X11应用发起针对指定的截图接口的调用请求;S102,通过Xwayland判断该调用请求是否为获取根窗口内容,若为获取根窗口内容,则跳转步骤S103;S103,通过Xwayland从Wayland合成器获取当前屏幕图像并返回给X11应用。2.根据权利要求1所述的Wayland环境下X应用的截图方法,其特征在于,步骤S101中指定的截图接口是指GetImage函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中定制的第73项处理函数,来截获X11应用发起针对GetImage函数接口的调用请求。3.根据权利要求1所述的Wayland环境下X应用的截图方法,其特征在于,步骤S101中指定的截图接口是指ShmGetImage函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中的MIT

SHM扩展处理函数中定制的分发函数,来截获X11应用发起针对ShmGetImage函数接口的调用请求。4.根据权利要求1所述的Wayland环境下X应用的截图方法,其特征在于,步骤S101中指定的截图接口是指CopyArea函数接口;步骤S101通过Xwayland截获X11应用发起针对指定的截图接口的调用请求是指:通过Xwayland处理向量数组ProcVector中定制的第62项处理函数,来截获X11应用发起针对CopyArea函数接口的调用请求。5.根据权利要求1所述的Wayland环境下X应用的截图方法,其特征在于,步骤S103包括:S201,通过Xwayland向Wayland合成器发起获取当前屏幕图像的请求并开始计时;S202,判断Xwayland在指定时间内是否从Wayland合成器获取当前屏幕...

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

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

1