CN116339900A - 一种跨运行环境的多窗口融合显示方法 - Google Patents

一种跨运行环境的多窗口融合显示方法 Download PDF

Info

Publication number
CN116339900A
CN116339900A CN202310618561.7A CN202310618561A CN116339900A CN 116339900 A CN116339900 A CN 116339900A CN 202310618561 A CN202310618561 A CN 202310618561A CN 116339900 A CN116339900 A CN 116339900A
Authority
CN
China
Prior art keywords
window
desktop
layer
android application
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310618561.7A
Other languages
English (en)
Other versions
CN116339900B (zh
Inventor
温研
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Linzhuo Information Technology Co Ltd
Original Assignee
Beijing Linzhuo Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Linzhuo Information Technology Co Ltd filed Critical Beijing Linzhuo Information Technology Co Ltd
Priority to CN202310618561.7A priority Critical patent/CN116339900B/zh
Publication of CN116339900A publication Critical patent/CN116339900A/zh
Application granted granted Critical
Publication of CN116339900B publication Critical patent/CN116339900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本发明公开了一种跨运行环境的多窗口融合显示方法,通过修改安卓系统框架建立了安卓应用运行全过程中安卓端与桌面系统端之间的消息机制,实现了安卓应用以桌面系统端应用的方式显示与操作,所有安卓应用桌面窗口能够同时独立刷新,且在安卓应用桌面窗口部分重叠时也能够正常显示,有效提升了用户在跨运行环境下的安卓应用使用体验。

Description

一种跨运行环境的多窗口融合显示方法
技术领域
本发明属于移动应用开发技术领域,具体涉及一种跨运行环境的多窗口融合显示方法。
背景技术
为了便于用户同时操作多个应用程序,安卓系统从7.0版开始引入了多窗口模式,即允许用户在同一屏幕中同时打开多个应用程序建立多个窗口。然而安卓系统的多窗口模式不会改变安卓应用的生命周期,同一时刻仅有一个处于活跃状态保持窗口刷新的安卓应用,其他窗口内的安卓应用虽然可见但其实际处于暂停状态,窗口也暂停刷新,同时大多数安卓应用仅为单窗口模式开发实现。此外,当多个窗口之间存在重叠区域时,窗口安卓应用的刷新会出现错误,例如,重叠区域可能出现模糊等。由此可见,安卓系统提供的多窗口模式与桌面环境中的多窗口之间使用体验差异很大。
综上所述,当在桌面系统中通过安卓端使用安卓应用时,例如,通过运行在桌面系统中的安卓应用显示单元xDroidUI和运行在安卓端的安卓应用兼容服务xDroidService配合实现安卓应用在桌面系统中的使用,系统提供的多窗口模式将无法支持安卓应用在桌面系统中以桌面系统的多窗口方式进行显示,这为用户的使用带来了不便。
发明内容
有鉴于此,本发明提供了一种跨运行环境的多窗口融合显示方法,能够实现安卓应用在桌面系统中以桌面系统的多窗口方式显示。
本发明提供的一种跨运行环境的多窗口融合显示方法,具体包括以下步骤:
当安卓端内启动安卓应用时向桌面系统端发送包含安卓应用包名的新建任务消息;
当安卓端接收到新建桌面窗口消息时,根据包名建立帧缓冲、DRM缓冲、TaskID及桌面窗口的可见范围与安卓应用的映射关系,创建安卓应用相关图层时为其增加TaskID标识,再执行安卓端的图层更新操作;
当安卓端接收到第一桌面窗口改变消息时,根据消息内容调整安卓应用窗口,记录从收到消息到安卓应用窗口调整完毕的时间作为响应时间,再将响应时间发送至桌面系统端;当安卓端接收到第二桌面窗口改变消息时,根据消息内容调整安卓应用窗口;
当安卓应用退出时安卓端向桌面系统端发送包含TaskID的应用退出消息;
当桌面系统端接收到新建任务消息时,根据包名获取安卓应用的TaskID,创建安卓应用的桌面窗口,建立桌面窗口与TaskID的映射关系;获取窗口管理器中桌面窗口对应的帧缓冲及DRM缓冲,再将包含包名、帧缓冲、DRM缓冲、TaskID及桌面窗口的可见范围的新建桌面窗口消息发送至安卓端;
当安卓应用的桌面窗口发生改变时,若为第一次改变则桌面系统端向安卓端发送第一桌面窗口改变消息,完成桌面窗口对应的调整,记录安卓端返回的响应时间及当前CPU负载;否则记录当前CPU负载,若当前CPU负载低于前次CPU负载且差值大于阈值则发送第一桌面窗口改变消息,并延迟前次的响应时间后完成桌面窗口的调整,记录安卓端返回的响应时间;若当前CPU负载不低于前次CPU负载或低于前次CPU负载且差值不大于阈值,则发送第二桌面窗口改变消息,并延迟前次的响应时间后完成桌面窗口的调整;
当桌面系统端接收到应用退出消息时,根据TaskID关闭桌面窗口,结束任务并释放帧缓冲及DRM缓冲;
其中,第一桌面窗口改变消息包括桌面窗口的大小、位置、事件及获取响应时间标识,第二桌面窗口改变消息包括桌面窗口的大小、位置及事件。
进一步地,所述事件包括窗口的Activate事件及Deactivate事件,事件中包含安卓应用桌面窗口的Z-Order。
进一步地,所述根据消息内容调整安卓应用窗口的方式为:
步骤3.1、安卓端根据消息中桌面窗口的大小、位置及Z-Order重新计算桌面窗口的可见范围;
步骤3.2、安卓端将与可见范围存在交集的图层设置为Dirty;
步骤3.3、执行图层更新操作完成安卓应用窗口的调整。
进一步地,所述可见范围以多个矩形的方式表示,矩形的位置采用矩形左上角顶点的桌面系统端坐标表示。
进一步地,所述图层更新操作的方式为:
步骤5.1、若待更新图层为Dirty则将待更新图层加入待刷新图层集合;否则,若待更新图层与其桌面窗口的可见范围存在交集则将待更新图层加入待刷新图层集合,若不存在则删除该待更新图层;按照TaskID将待刷新图层集合中的图层分成多个图层分组;
步骤5.2、将图层分组内的图层合成为合成图层,若图层分组中存在定义了透明度的图层,则在渲染合成图层时设置透明度参数的取值,再将合成图层写入帧缓冲,若写入错误则执行步骤5.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤5.4;否则在渲染合成图层时将透明度参数的取值设置为0xFF,再将合成图层写入帧缓冲,若写入错误则执行步骤5.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤5.4;
步骤5.3、获取DRM缓冲的图形内存格式,按照图形内存格式重新将图层分组内的图层合成为合成图层,再将合成图层写入DRM缓冲,完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口;
步骤5.4、若待刷新图层集合中的所有图层均已处理完毕,则结束本流程;否则执行步骤5.2。
进一步地,所述桌面系统端为运行xDroidUI的Linux系统,安卓端内运行xDroidService。
进一步地,所述桌面系统端向安卓端发送第一桌面窗口改变消息的方式为:
当xDroidUI收到桌面系统端发送的桌面窗口大小改变消息、位置改变消息或激活事件时,将事件内容发送至xDroidService。
进一步地,所述安卓端通过RPC方式向桌面系统端发送消息。
有益效果
本发明通过修改安卓系统框架建立了安卓应用运行全过程中安卓端与桌面系统端之间的消息机制,实现了安卓应用能够以桌面系统端应用的方式进行显示与操作,所有安卓应用桌面窗口能够同时独立刷新,且在安卓应用桌面窗口部分重叠时也能够正常显示,有效提升了用户在跨运行环境下的安卓应用使用体验。
具体实施方式
下面列举实施例,对本发明进行详细描述。
Linux系统为显示设备提供接口即为帧缓冲(framebuffer),帧缓冲是抽象显存形成的设备,上层应用程序在图形模式下可直接对帧缓冲进行读写操作。一般情况下,framebuffer设备对应的设备文件为/dev/fb*,Linux可支持多个framebuffer设备,最多可达32个,分别为/dev/fb0到/dev/fb31,若未指定Linux系统使用的显示设备则通常指向/dev/fb0。
DRM( Direct Rendering Manager)即直接渲染管理器,用于解决多个应用对Video Card 资源的协同使用问题,并向用户空间提供了一组 API以实现对GPU的控制。换句话说,DRM是Linux下的图形渲染架构用于管理显示输出和分配缓冲区,应用可以直接使用 DRM的 ioctl 或framebuffer 提供的接口进行显示相关操作,并封装为 libdrm 库进一步方便用户进行显示控制。
本发明提供的一种跨运行环境的多窗口融合显示方法,其核心思想是:通过修改安卓系统框架,安卓端在安卓应用运行及退出时均向桌面系统端发送对应的消息,桌面系统端根据安卓端发送的消息创建桌面窗口,并在桌面窗口发生变化时向安卓端发送消息,安卓端根据桌面系统端的消息合成安卓应用的图层,并将合成图层直接发送至帧缓冲完成安卓应用桌面窗口的渲染。
本发明提供的一种跨运行环境的多窗口融合显示方法,具体包括以下步骤:
在安卓端,当启动安卓应用创建任务时向桌面系统端发送新建任务消息,新建任务消息包含任务的安卓应用名称及包名;
当接收到新建桌面窗口消息时,根据消息中的包名建立桌面窗口对应的帧缓冲、DRM缓冲、对应的TaskID及桌面窗口的可见范围与安卓应用之间的映射关系;创建安卓应用的图层时为每个图层增加TaskID标识,再执行安卓端的图层更新操作;
当接收到第一桌面窗口改变消息时,根据第一桌面窗口改变消息中的信息调整安卓应用窗口,记录从收到消息到安卓应用窗口调整完毕的时间作为响应时间,再将响应时间发送至桌面系统端;当接收到第二桌面窗口改变消息时,根据第二桌面窗口改变消息中的信息调整安卓应用窗口;
当安卓应用退出时向桌面系统端发送应用退出消息,该应用退出消息包含安卓应用对应的TaskID。
其中,安卓端调整安卓应用窗口的方式为:
步骤1.1、安卓端根据接收到的第一桌面窗口改变消息或第二桌面窗口改变消息中桌面窗口的大小、位置及Z-Order,重新计算安卓应用对应的桌面窗口的可见范围,该可见范围可以多个矩形的方式表示,矩形的位置采用矩形左上角顶点的桌面系统端坐标来表示;
步骤1.2、安卓端将与该可见范围存在交集的图层设置为Dirty;
步骤1.3、执行图层更新操作,完成安卓应用窗口的调整。
本发明中,安卓端中图层更新操作的方式为:
步骤2.1、若待更新图层为Dirty则将待更新图层加入待刷新图层集合;否则,根据待更新图层的TaskID获取其所在安卓应用的桌面窗口的可见范围,判断待更新图层是否与该可见范围存在交集,若存在则将待更新图层加入待刷新图层集合,否则删除该待更新图层;按照TaskID将待刷新图层集合中的图层分组,得到多个图层分组;
步骤2.2、将图层分组内的图层合成为合成图层,若图层分组中存在定义了透明度的图层,则在渲染合成图层时设置透明度参数的取值,再将合成图层写入安卓应用对应的帧缓冲,若写入帧缓冲错误则执行步骤2.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤2.4;否则在渲染合成图层时将透明度参数的取值设置为0xFF,再将合成图层写入安卓应用对应的帧缓冲,若写入帧缓冲错误则执行步骤2.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤2.4;
步骤2.3、获取DRM缓冲的图形内存格式,按照图形内存格式重新将图层分组内的图层合成为合成图层,再将合成图层写入DRM缓冲,完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口;
步骤2.4、若待刷新图层集合中的所有图层均已处理完毕,则结束本流程;否则执行步骤2.2。
安卓应用在桌面端的显示过程中,安卓应用在安卓端和桌面系统端的大小是相同的,但是由于安卓系统多窗口机制中窗口未设置位置,因此,本发明中需要根据桌面窗口的大小、位置及Z-Order,重新计算安卓应用在桌面系统端的可见范围,也就是桌面系统端内安卓应用桌面窗口未被遮盖的部分。
在桌面系统端,当接收到新建任务消息时,根据新建任务消息中的包名获取安卓应用对应的TaskID,创建安卓应用对应的桌面窗口并建立桌面窗口与TaskID间的映射关系;获取窗口管理器中桌面窗口对应的帧缓冲及DRM缓冲,再将包含安卓应用包名、桌面窗口对应的帧缓冲、DRM缓冲、对应的TaskID及桌面窗口的可见范围的新建桌面窗口消息发送至安卓端;一般情况下,此时桌面窗口的可见范围为桌面窗口的全部大小;
当安卓应用对应的桌面窗口发生改变时,若为第一次改变则向安卓端发送第一桌面窗口改变消息,并完成桌面窗口对应的调整,获取并记录安卓端返回的此次桌面窗口改变消息的响应时间及桌面系统端的当前CPU负载;否则获取并记录桌面系统端的当前CPU负载,若当前CPU负载低于前次CPU负载且差值大于阈值则发送第一桌面窗口改变消息,并延迟前次记录的响应时间后完成桌面窗口对应的调整,获取并记录安卓端返回的此次桌面窗口改变消息的响应时间;若当前CPU负载不低于前次CPU负载,则发送第二桌面窗口改变消息,并延迟前次记录的响应时间后完成桌面窗口对应的调整;
当接收到应用退出消息时,根据TaskID关闭对应的桌面窗口,结束对应的任务,释放帧缓冲及DRM缓冲。
其中,第一桌面窗口改变消息包括桌面窗口的大小、位置、事件及获取响应时间标识,第二桌面窗口改变消息包括桌面窗口的大小、位置、事件,其中事件是指窗口的Activate或Deactivate事件,事件中包含Linux端当前所有安卓应用桌面窗口的Z-Order,也就是各安卓应用桌面窗口间的上下层关系。
本发明,通过增加桌面系统端根据安卓端的响应时间延迟完成桌面窗口对应的调整的方式,有效提高了桌面窗口调整过程中显示大小与显示内容的同步性。
实施例
本实施例以Linux系统作为桌面系统端基于xDroidUI和xDroidService,采用本发明提供的一种跨运行环境的多窗口融合显示方法实现了安卓应用在Linux系统中的多窗口显示,具体包括以下步骤:
S1、在安卓端,修改安卓的TaskManagerService实现创建新的安卓应用Task时采用RPC机制向Linux端的xDroidUI发送新建任务消息。
S2、在Linux系统端,xDroidUI接收到新建任务消息后,执行以下操作:
S2.1、获取安卓应用的TaskID;
S2.2、创建Linux系统的桌面窗口,如:X11或Wayland,并建立桌面窗口与TaskID的映射关系;
S2.3、获取Linux端窗口管理器的native handle,再通过fbdev库获取nativehandle对应的framebuffer和DRM buffer;
S2.4、将framebuffer、DRM buffer、对应的TaskID及桌面窗口的可见范围的新建桌面窗口消息发送至安卓端的xDroidService,后续由xDroidService将新建桌面窗口消息中的信息传给至安卓端的hwcomposer,再由hwcomposer负责图层合成。
S3、在Linux端实时将安卓应用桌面窗口的大小、位置及事件(包括:Activate或Deactivate)传递给安卓端的xDroidService。其中,事件为当前所有Linux端的安卓应用桌面窗口的Z-Order,也就是各安卓应用的桌面窗口之间的上下层关系。
具体可采用两种实现方式,一种是在xDroidUI内实现,这种方式实时性较低,但实现比较简单;另一种是在窗口管理器内实现,这种方式实时性更强,而且可以隐藏安卓端的处理延迟,但实现较复杂。
对于第一种情况,即在xDroidUI内实现:
需要修改xDroidUI,实现在收到桌面系统端发送的桌面窗口大小改变消息(如Qt的QResizeEvent)、位置改变消息(如Qt的QMoveEvent)、激活事件时,将事件内容发送至xDroidService。
对于第二种情况,即在窗口管理器内实现:
S3.1、修改窗口管理器,在准备发送窗口大小改变、位置改变和激活事件给一个窗口(记为appWindow)前,判断appWindow是否是一个安卓应用窗口,如是则执行S3.2,否则执行Linux系统标准流程;
S3.2、窗口管理器收到窗口变化消息后,记录当前CPU负载,如果前次记录的CPU负载变化超过20%或是第一次发送,则在向xDroidService发送消息后调整桌面窗口的大小,同时执行S3.3重新记录响应时间;否则在向xDroidService发送消息后,执行S3.4;
S3.3、通过RPC从xDroidService获取安卓端处理窗口大小改变、位置改变和激活事件的响应时间,分别对应的是安卓端的resizeTask、重新计算activity覆盖关系和重新设置activityStack的时间;
S3.4、以上一次获取的响应时间作为delayTime,延迟delayTime后再向appWindow发送对应消息。
上述操作的目的是:隐藏安卓端处理这些消息的延迟,使得Linux端和安卓端处理这些事件的结果看似是“同步”的,例如内外大小“同时”改变。
S4、修改安卓端的SurfaceFlinger,实现多窗口图层的正确渲染。
S4.1、修改SurfaceFlinger中Layer的创建过程,增加成员变量taskID,在创建时通过TaskManagerService的接口获取当前Task的Id,并将其赋值给当前正在创建的Layer的taskID;
S4.2、在收到来自xDroidService发送的窗口大小改变、位置改变、安卓应用Z-Order变化的消息时,执行:
S4.2.1、根据每个桌面窗口的大小、位置和Z-Order,重新计算每个安卓应用的可见范围,也就是从Linux窗口的角度,每个应用窗口没有被盖住的部分,可以若干矩形的方式表示,这些矩形的左上角坐标以Linux端的坐标系表达,其中,桌面窗口的大小在安卓端和Linux端是相同的;
S4.2.2、重写安卓端Activity的刷新判断逻辑,即conflict判断逻辑,实现若图层存在可见矩形,则将该矩形设置为Dirty强制刷新,即依照上一步的信息判断两个Activity是否存在conflict,存在安卓端才会刷新Activity;
S4.2.3、构建更新消息执行S4.3,即执行vsync事件处理函数。
S4.3、在收到图层的更新消息或定时刷新消息vsync时,对每个待更新图层(记为layer)执行:
S4.3.1、获取每个图层的taskID,获取对应的安卓应用窗口的可见范围;
S4.3.2、将layer的左上角顶点坐标x,y转换为Linux端的坐标,若layer的范围(x,y,width,height)不在安卓应用桌面窗口的可见范围内,则将layer从需要刷新的layer列表中删除。
S4.4、形成真正需要刷新的图层集合,将此图层集合发送给hwcomposer。
S5、修改安卓端的hwcomposer,对于待刷新图层集合,获取每个图层的taskID,按照taskID分组,对于每个分组执行:
S5.1、若图层中含有透明定义图层,则在完成图层合成后进行渲染时加入透明度alpha参数,若没有则alpha为0xFF;
S5.2、渲染时基于fbdev库直接将合成结果写入此应用taskID对应的framebuffer,如产生写失败,一般是报参数错误,则执行S5.3;否则结束渲染;
这种方式简单高效,主要针对不使用3D图形渲染的应用,但是fbdev库管理的framebuffer对于使用3D图形渲染的兼容性很差。
S5.3、通过libdrm库获取DRM buffer的图形内存格式,如RGB、RGBA等;按照此格式进行图层合成,然后写入DRM buffer完成将安卓应用的一帧窗口数据渲染到Linux窗口的过程。
由于现有技术不区分2D和3D,一般直接使用DRM,而且一般是传到安卓端执行渲染而不是发到DRM中进行渲染。
S6、Linux端,应用退出时,释放对应的framebuffer和DRM buffer句柄。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种跨运行环境的多窗口融合显示方法,其特征在于,具体包括以下步骤:
当安卓端内启动安卓应用时向桌面系统端发送包含安卓应用包名的新建任务消息;
当安卓端接收到新建桌面窗口消息时,根据包名建立帧缓冲、DRM缓冲、TaskID及桌面窗口的可见范围与安卓应用的映射关系,创建安卓应用相关图层时为其增加TaskID标识,再执行安卓端的图层更新操作;
当安卓端接收到第一桌面窗口改变消息时,根据消息内容调整安卓应用窗口,记录从收到消息到安卓应用窗口调整完毕的时间作为响应时间,再将响应时间发送至桌面系统端;当安卓端接收到第二桌面窗口改变消息时,根据消息内容调整安卓应用窗口;
当安卓应用退出时安卓端向桌面系统端发送包含TaskID的应用退出消息;
当桌面系统端接收到新建任务消息时,根据包名获取安卓应用的TaskID,创建安卓应用的桌面窗口,建立桌面窗口与TaskID的映射关系;获取窗口管理器中桌面窗口对应的帧缓冲及DRM缓冲,再将包含包名、帧缓冲、DRM缓冲、TaskID及桌面窗口的可见范围的新建桌面窗口消息发送至安卓端;
当安卓应用的桌面窗口发生改变时,若为第一次改变则桌面系统端向安卓端发送第一桌面窗口改变消息,完成桌面窗口对应的调整,记录安卓端返回的响应时间及当前CPU负载;否则记录当前CPU负载,若当前CPU负载低于前次CPU负载且差值大于阈值则发送第一桌面窗口改变消息,并延迟前次的响应时间后完成桌面窗口的调整,记录安卓端返回的响应时间;若当前CPU负载不低于前次CPU负载或低于前次CPU负载且差值不大于阈值,则发送第二桌面窗口改变消息,并延迟前次的响应时间后完成桌面窗口的调整;
当桌面系统端接收到应用退出消息时,根据TaskID关闭桌面窗口,结束任务并释放帧缓冲及DRM缓冲;
其中,第一桌面窗口改变消息包括桌面窗口的大小、位置、事件及获取响应时间标识,第二桌面窗口改变消息包括桌面窗口的大小、位置及事件。
2.根据权利要求1所述的多窗口融合显示方法,其特征在于,所述事件包括窗口的Activate事件及Deactivate事件,事件中包含安卓应用桌面窗口的Z-Order。
3.根据权利要求2所述的多窗口融合显示方法,其特征在于,所述根据消息内容调整安卓应用窗口的方式为:
步骤3.1、安卓端根据消息中桌面窗口的大小、位置及Z-Order重新计算桌面窗口的可见范围;
步骤3.2、安卓端将与可见范围存在交集的图层设置为Dirty;
步骤3.3、执行图层更新操作完成安卓应用窗口的调整。
4.根据权利要求3所述的多窗口融合显示方法,其特征在于,所述可见范围以多个矩形的方式表示,矩形的位置采用矩形左上角顶点的桌面系统端坐标表示。
5.根据权利要求3所述的多窗口融合显示方法,其特征在于,所述图层更新操作的方式为:
步骤5.1、若待更新图层为Dirty则将待更新图层加入待刷新图层集合;否则,若待更新图层与其桌面窗口的可见范围存在交集则将待更新图层加入待刷新图层集合,若不存在则删除该待更新图层;按照TaskID将待刷新图层集合中的图层分成多个图层分组;
步骤5.2、将图层分组内的图层合成为合成图层,若图层分组中存在定义了透明度的图层,则在渲染合成图层时设置透明度参数的取值,再将合成图层写入帧缓冲,若写入错误则执行步骤5.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤5.4;否则在渲染合成图层时将透明度参数的取值设置为0xFF,再将合成图层写入帧缓冲,若写入错误则执行步骤5.3,否则完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口执行步骤5.4;
步骤5.3、获取DRM缓冲的图形内存格式,按照图形内存格式重新将图层分组内的图层合成为合成图层,再将合成图层写入DRM缓冲,完成将安卓应用的一帧窗口数据渲染到桌面系统端的桌面窗口;
步骤5.4、若待刷新图层集合中的所有图层均已处理完毕,则结束本流程;否则执行步骤5.2。
6.根据权利要求1所述的多窗口融合显示方法,其特征在于,所述桌面系统端为运行xDroidUI的Linux系统,安卓端内运行xDroidService。
7.根据权利要求6所述的多窗口融合显示方法,其特征在于,所述桌面系统端向安卓端发送第一桌面窗口改变消息的方式为:
当xDroidUI收到桌面系统端发送的桌面窗口大小改变消息、位置改变消息或激活事件时,将事件内容发送至xDroidService。
8.根据权利要求1所述的多窗口融合显示方法,其特征在于,所述安卓端通过RPC方式向桌面系统端发送消息。
CN202310618561.7A 2023-05-30 2023-05-30 一种跨运行环境的多窗口融合显示方法 Active CN116339900B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310618561.7A CN116339900B (zh) 2023-05-30 2023-05-30 一种跨运行环境的多窗口融合显示方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310618561.7A CN116339900B (zh) 2023-05-30 2023-05-30 一种跨运行环境的多窗口融合显示方法

Publications (2)

Publication Number Publication Date
CN116339900A true CN116339900A (zh) 2023-06-27
CN116339900B CN116339900B (zh) 2023-07-18

Family

ID=86891582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310618561.7A Active CN116339900B (zh) 2023-05-30 2023-05-30 一种跨运行环境的多窗口融合显示方法

Country Status (1)

Country Link
CN (1) CN116339900B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627579A (zh) * 2023-07-24 2023-08-22 麒麟软件有限公司 一种在Linux上缩放安卓应用窗口的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120086716A1 (en) * 2010-10-01 2012-04-12 Imerj LLC User interaction across cross-environment applications through an extended graphics context
CN103339600A (zh) * 2010-10-01 2013-10-02 Flex Electronics ID Co.,Ltd. 立即远程呈现
CN112114916A (zh) * 2020-08-31 2020-12-22 北京技德系统技术有限公司 一种在Linux操作系统上兼容运行Android应用的方法和装置
CN113986446A (zh) * 2021-12-23 2022-01-28 北京麟卓信息科技有限公司 一种安卓运行环境内安卓应用窗口的缩放优化方法
WO2022143180A1 (zh) * 2020-12-28 2022-07-07 华为技术有限公司 协同显示方法、终端设备及计算机可读存储介质
CN115562793A (zh) * 2022-12-05 2023-01-03 北京麟卓信息科技有限公司 一种基于镜像操作的跨运行环境ui快速渲染方法
WO2023087778A1 (zh) * 2021-11-19 2023-05-25 北京字节跳动网络技术有限公司 窗口信息处理方法、装置、电子设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120086716A1 (en) * 2010-10-01 2012-04-12 Imerj LLC User interaction across cross-environment applications through an extended graphics context
CN103339600A (zh) * 2010-10-01 2013-10-02 Flex Electronics ID Co.,Ltd. 立即远程呈现
CN112114916A (zh) * 2020-08-31 2020-12-22 北京技德系统技术有限公司 一种在Linux操作系统上兼容运行Android应用的方法和装置
WO2022143180A1 (zh) * 2020-12-28 2022-07-07 华为技术有限公司 协同显示方法、终端设备及计算机可读存储介质
WO2023087778A1 (zh) * 2021-11-19 2023-05-25 北京字节跳动网络技术有限公司 窗口信息处理方法、装置、电子设备及存储介质
CN113986446A (zh) * 2021-12-23 2022-01-28 北京麟卓信息科技有限公司 一种安卓运行环境内安卓应用窗口的缩放优化方法
CN115562793A (zh) * 2022-12-05 2023-01-03 北京麟卓信息科技有限公司 一种基于镜像操作的跨运行环境ui快速渲染方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116627579A (zh) * 2023-07-24 2023-08-22 麒麟软件有限公司 一种在Linux上缩放安卓应用窗口的方法及装置
CN116627579B (zh) * 2023-07-24 2023-10-31 麒麟软件有限公司 一种在Linux上缩放安卓应用窗口的方法及装置

Also Published As

Publication number Publication date
CN116339900B (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
US11164280B2 (en) Graphics layer processing in a multiple operating systems framework
WO2016095728A1 (zh) 一种多窗口显示方法及装置
CN116339900B (zh) 一种跨运行环境的多窗口融合显示方法
CN105190701B (zh) 基于原语的合成系统及方法
JPS62298882A (ja) マルチ・ウィンドウ表示システム
CN114741044B (zh) 一种基于异构渲染的跨运行环境显示输出共享方法
CN109324903B (zh) 用于嵌入式系统的显示资源调度方法及装置
CN112614202A (zh) Gui渲染显示的方法、终端、服务器、电子设备及存储介质
CN111651079A (zh) 书写笔迹显示方法、装置、设备及计算机存储介质
US20130002688A1 (en) Method for controlling multiple displays and system thereof
KR20150025594A (ko) 멀티 이미지 레이어 컴포지트 방법
JP2014135013A (ja) 画像転送方法、サーバ機器及びプログラム
CN114741081A (zh) 一种基于异构缓存访问的跨运行环境显示输出共享方法
EP1406243A2 (en) Screen display processing apparatus, screen display processing and computer program
CN114895961A (zh) 一种跨运行环境的显示输出共享方法
CN117170883B (zh) 渲染显示的方法、装置、设备及存储介质
CN114237532A (zh) 基于Linux嵌入式系统的多窗口实现方法、装置及介质
US20080084426A1 (en) Off-screen buffering management device and method
JP2006092217A (ja) メモリ制御方法、グラフィックプロセッサおよび情報処理装置
US8203567B2 (en) Graphics processing method and apparatus implementing window system
CN114924837A (zh) 数据处理方法、电子设备和可读存储介质
JP3797371B2 (ja) 描画命令のフックを利用した画像の転送
KR101698484B1 (ko) 자바 어플리케이션 실행 방법 및 장치
CN117724797B (zh) 一种基于异构混合渲染的自由缩放优化方法
CN117234657B (zh) 一种基于虚拟子图层的多窗口渲染优化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant