CN114115688B - 抑制显示抖动的方法及装置、电子设备、存储介质 - Google Patents
抑制显示抖动的方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114115688B CN114115688B CN202111392446.XA CN202111392446A CN114115688B CN 114115688 B CN114115688 B CN 114115688B CN 202111392446 A CN202111392446 A CN 202111392446A CN 114115688 B CN114115688 B CN 114115688B
- Authority
- CN
- China
- Prior art keywords
- touch event
- rendering request
- update rendering
- client
- update
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请是关于一种抑制显示抖动的方法及装置、电子设备、存储介质。所述方法包括:响应于来自合成器的更新渲染请求,客户端判断所述更新渲染请求与前次更新渲染请求是否相同;在所述更新渲染请求与前次更新渲染请求相同的情况下,所述客户端获取自身输入线程接收的触摸事件,判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,不响应所述更新渲染请求,在触摸事件不同的情况下,基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。本申请保证了屏幕图案更新的连续性,大大提升了显示屏的显示效果,提升了用户体验。
Description
技术领域
本申请实施例涉及电子设备显示处理技术,尤其涉及一种抑制显示抖动的方法及装置、电子设备、存储介质。
背景技术
在基于wayland协议的显示框架中,操作系统中产生的内核事件一般先发送给合成器(wayland compositor),由合成器检查内核事件的场景图(scenegraph),以决定哪个窗口对应的客户端应该接收该内核事件。在客户端接收到内核事件后,开始更新渲染界面,渲染完成后将合成请求通过wayland socket发送给wayland compositor,waylandcompositor对各界面图形合成后通过显示屏输出,实现屏幕图案刷新。但是,由于waylandcompositor除了接收内核事件还有其他任务需要处理,某些时候可能会造成线程阻塞,这样内核事件就不能及时被响应,导致丢帧,从而导致屏幕图案抖动。
发明内容
有鉴于此,本申请实施例提供一种抑制显示抖动的方法及装置、电子设备、存储介质,以至少解决现有技术中存在的以上技术问题。
根据本申请实施例的第一方面,提供一种抑制显示抖动的方法,包括:
响应于来自合成器的更新渲染请求,客户端判断所述更新渲染请求与前次更新渲染请求是否相同;
在所述更新渲染请求与前次更新渲染请求相同的情况下,所述客户端获取自身输入线程接收的触摸事件,判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,不响应所述更新渲染请求,在触摸事件不同的情况下,基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
在一个实施例中,所述方法还包括:
所述输入线程检测输入驱动输入的触摸事件,为所述触摸事件设置时间戳,将设置有时间戳的触摸事件添加于触摸事件队列中。
在一个实施例中,所述方法还包括:
为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。
在一个实施例中,所述方法还包括:
设置设定数量的所述输入线程,所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。
在一个实施例中,所述方法还包括:
在所述更新渲染请求与前次更新渲染请求不同的情况下,所述客户端以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,忽略所述触摸事件队列中的触摸事件。
根据本申请实施例的第二方面,提供一种抑制显示抖动的方法,包括:
在触发周期到来的情况下,合成器检测自身的触摸事件队列,在所述触摸事件队列为空的情况下,以前一触发周期内的触摸事件生成更新渲染请求,将所生成的更新渲染请求向所述客户端发送。
在一个实施例中,将所生成的更新渲染请求向所述客户端发送之后,所述方法还包括:
在触发周期到来,所述合成器检测自身的触摸事件队列仍为空的情况下,继续以之前所生成的更新渲染请求向所述客户端发送,在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
在一个实施例中,所述方法还包括:
所述合成器检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。
根据本申请实施例的第三方面,提供一种抑制显示抖动的装置,包括:
第一判断单元,用于响应于来自合成器的更新渲染请求,用于判断所述更新渲染请求与前次更新渲染请求是否相同;
获取单元,用于在所述更新渲染请求与前次更新渲染请求相同的情况下,触发所述客户端获取自身输入线程接收的触摸事件;
第二判断单元,用于判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,触发第一处理单元;在触摸事件不同的情况下,触发第二处理单元;
第一处理单元,用于不响应所述更新渲染请求;
第二处理单元,用于基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
在一个实施例中,所述装置还包括:
添加单元,用于在所述输入线程检测输入驱动输入的触摸事件后,为所述触摸事件设置时间戳,将设置有时间戳的触摸事件添加于触摸事件队列中。
在一个实施例中,所述装置还包括:
第一设置单元,用于为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。
在一个实施例中,所述装置还包括:
第二设置单元,用于设置设定数量的所述输入线程;
分配单元,用于触发所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。
在一个实施例中,所述第二处理单元,还用于:
在所述更新渲染请求与前次更新渲染请求不同的情况下,以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,忽略所述触摸事件队列中的触摸事件。
根据本申请实施例的第四方面,提供一种抑制显示抖动的装置,包括:
检测单元,用于在触发周期到来的情况下,检测触摸事件队列是否为空,在触摸事件队列为空的情况下,触发生成单元;
生成单元,用于以前一触发周期内的触摸事件生成更新渲染请求;
发送单元,用于将所述更新渲染请求向所述客户端发送。
在一个实施例中,所述发送单元将所述更新渲染请求向所述客户端发送之后,所述检测单元还用于在触发周期到来,检测所述触摸事件队列仍为空的情况下,所述发送单元继续以之前所生成的更新渲染请求向所述客户端发送;在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
在一个实施例中,所述生成单元,还用于:
在所述检测单元检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。
根据本申请实施例的第五方面,提供一种电子设备,包括处理器、存储器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行前述第一方面或第二方面所述的抑制显示抖动的方法的步骤。
根据本申请实施例的第六方面,提供一种存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现前述第一方面或第二方面所述的抑制显示抖动的方法的步骤。
本申请实施例中,通过为客户端设置用于检测触摸事件(touch)的输入线程(libinput),客户端能独立于compositor对触摸事件进行检测,并将获取的触摸事件存储于本地的触摸事件队列中。而对于compositor侧,在触发周期到来后,未检测到新触摸事件的情况下,以旧触摸事件生成更新渲染请求,并继续向客户端发送;在客户端接收到包含旧触摸事件的更新渲染请求后,客户端再在本地的触摸事件中查找最新的触摸事件,以该最新的触摸事件中的触摸位置更新相应场景图并进行渲染,向所述合成器输出渲染后的场景图。本申请实施例通过在客户端设置触摸事件接收的线程,即使compositor处理触摸事件不及时,也不会导致屏幕图案的抖动。本申请实施例保证了屏幕图案更新的连续性,大大提升了显示屏的显示效果,提升了用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的抑制显示抖动的方法的流程示意图;
图2为本申请实施例的抑制显示抖动的方法的流程示意图;
图3为本申请实施例的抑制显示抖动的实现框架示意图;
图4为本申请实施例的抑制显示抖动的实现信令示意图;
图5为本申请实施例的抑制显示抖动的装置的组成结构示意图;
图6为本申请实施例的抑制显示抖动的装置的组成结构示意图;
图7为本申请实施例的电子设备的结构图。
具体实施方式
以下结合附图,详细阐明本申请实施例技术方案的实质。
图1为本申请实施例的抑制显示抖动的方法的流程示意图,如图1所示,本申请实施例的抑制显示抖动的方法包括以下处理步骤:
步骤101,响应于来自合成器的更新渲染请求,客户端判断所述更新渲染请求与前次更新渲染请求是否相同。
客户端接收到来自合成器的更新渲染请求后,首先获取该更新渲染请求中的触摸事件,确定该触摸事件是否与前一次接收到的更新渲染请求中的触摸事件是否相同,若触摸事件相同,则确定当前的更新渲染请求与前次更新渲染请求相同,否则,当前的更新渲染请求与前次更新渲染请求不同。其中,触摸事件相同是指触摸事件中的位置信息相同。
这里,客户端通过对合成器发送的更新渲染请求的情况进行判断,以便进行相应的处理。在所述更新渲染请求与前次更新渲染请求不同的情况下,所述客户端以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,本地触摸事件队列中的触摸事件。这种情况认为合成器对触摸事件的处理比较及时,未发生线程阻塞情况。
本申请实施例中,客户端是指wayland协议的显示框架中的各显示窗口对应的应用,也可以是相关应用当前显示的窗口或其对应的进程。
本申请实施例中,通过为客户端设置所述输入线程,该输入线程可以检测输入驱动输入的触摸事件,为检测到的所述触摸事件设置时间戳,并将设置有时间戳的触摸事件添加于触摸事件队列中。在该触摸事件队列中,可以以时间戳顺序对所检测到的触摸事件进行排序,以方便客户端从触摸事件队列中获取最新的触摸事件。
作为一种实现方式,本申请实施例中,为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。即可以为各个客户端均设置输入线程,以对客户端的触摸事件进行检测,并添加到相应的触摸事件队列中。
或者,操作系统中仅设置设定数量的所述输入线程,所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。这里的设定数量可以为3、4、5、6、7、8或9等,即为当前的显示窗口设置共用的输入线程,以在确定出当前显示窗口后,为相应的客户端动态调用输入线程进行触摸事件的检测。
步骤102,在所述更新渲染请求与前次更新渲染请求相同的情况下,所述客户端获取自身输入线程接收的触摸事件,判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同。
本申请实施例中,为避免因合成器未及时对触摸事件进行响应导致屏幕图案刷新不同步,从而导致显示屏的屏幕图案抖动。在合成器检测到本地触摸事件队列为空的情况下,仍向客户端发送更新渲染请求,以便客户端基于自身检测的触摸事件进行图案的更新渲染。
客户端接收到合成器发送的更新渲染请求后,判断该更新渲染请求中的触摸事件是否与本地输入线程接收的最新触摸事件是否相同,以确定合成器是否丢弃了触摸事件,以便在合成器丢弃了触摸事件的情况下,以本地接收线程接收到的触摸事件中的最新触摸位置对屏幕图案进行刷新并渲染,保证显示图案不抖动,提升显示屏的显示品质。
步骤103,在触摸事件相同的情况下,不响应所述更新渲染请求。
本申请实施例中,在确定当前接收的更新渲染请求中触摸事件与客户端的触摸事件队列中最新的触摸事件相同的情况下,意味着合成器能及时对触摸事件进行响应,未发生合成器因线程阻塞而丢弃触摸事件的情况,此时,客户端基于更新渲染请求中的触摸事件的触摸位置对屏幕图案进行刷新并渲染,保证正常的屏幕图案刷新。
步骤104,在触摸事件不同的情况下,基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
本申请实施例中,在确定当前接收的更新渲染请求中触摸事件与客户端的触摸事件队列中最新的触摸事件不同的情况下,可能意味着合成器未能及时对触摸事件进行响应,合成器端发生了因线程阻塞而丢弃触摸事件的情况,此时,为确认合成器端是否发生了丢弃触摸事件的情形,合成器仍继续向客户端发送更新渲染请求,触发客户端基于本地接收线程所接收到的触摸事件进行屏幕图案刷新,以保证显示图案仍能以最新的触摸事件进行更新,避免了因合成器端的线程阻塞导致显示图形的抖动。
图2为本申请实施例的抑制显示抖动的方法的流程示意图,如图2所示,本申请实施例的抑制显示抖动的方法包括以下处理步骤:
步骤201,触发周期到来的情况下,合成器检测自身的触摸事件队列。
本申请实施例中,在触发周期到来的情况下,合成器检测自身的触摸事件队列中是否接收到了相应的触摸事件,确定接收到触摸事件的情况下,基于触摸事件生成相应的更新渲染请求,向客户端发送该更新渲染请求,以使客户端基于该更新渲染请求中的触摸事件进行屏幕图像的更新渲染。
步骤202,在所述触摸事件队列为空的情况下,以前一触发周期内的触摸事件生成更新渲染请求,将所生成的更新渲染请求向所述客户端发送。
本申请实施例中,为避免因合成器未及时对触摸事件进行响应导致屏幕图案刷新不同步,从而导致显示屏的屏幕图案抖动。在合成器检测到本地触摸事件队列为空的情况下,仍向客户端发送更新渲染请求,以便客户端基于自身检测的触摸事件进行图案的更新渲染。在触摸事件队列为空的情况下,采用上一触发周期中的触摸事件生成更新渲染请求,即当前发送的更新渲染请求与上一触发周期发送的更新渲染请求携带有相同的内容。这种重复发送相同内容的更新渲染请求的情况,意味着合成器侧未检测到新的触摸事件,以作为对客户端的提醒,由客户端确定自身是否也未检测到新的触摸事件,若客户端也未检测到新的触摸事件,则意味着是用户停止了对显示窗口的相关操作;若客户端也未检测到新的触摸事件,则意味着合成器侧导致了线程延迟处理,此时用户有相关操作而合成器未检测到触摸事件,此时需要由客户端基于自身的触摸事件队列中最新的触摸事件主动进行屏幕图像的更新渲染,以避免显示抖动的现象。
本申请实施例中,在触发周期到来,所述合成器检测自身的触摸事件队列仍为空的情况下,继续以之前所生成的更新渲染请求向所述客户端发送,在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
具体地,对于用户停止了对显示窗口的相关操作的情况下,为了避免合成器不停地向客户端发送更新渲染请求,而导致处理资源无谓占用及电子设备电能无谓消耗的情形,在合成器检测触摸事件队列持续为空并持续发送更新渲染请求的次数达到设定阈值情况下,主动停止持续发送相同更新渲染请求。这里的设定阈值可以为5次、10次、15次、20次等,可以根据操作系统的处理资源及耗电情形而动态设置。在合成器检测触摸事件队列持续为空并持续发送更新渲染请求的情况下,而合成器又检测到新触摸事件,则生成新的更新渲染请求并向客户端发送,结束持续发送相同更新渲染请求的机制。
本申请实施例中,所述合成器检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。在合成器因线程阻塞而不能及时对触摸事件进行检测的情况下,必然会导致触摸事件的阻塞而在某一时刻接收到两个以上的触摸事件,此时,对于时间戳较早的触摸事件而言,已是用户之前的操作,不必再对其进行相应处理,可以直接丢弃,仅以最新接收到的触摸事件触发客户端进行图像更新。
以下结合具体示例,对本申请实施例的技术方案作进一步的详细说明。
本申请实施例中,以窗口管理器Kwin架构绘制窗口图像为例进行说明,其中,Kwin一般是基于QT方式编写,虽然Kwin中touch事件接收是在单独线程完成的,但是touch事件发送到client端,需要经过QT事件循环,也就是最终需要在主线程上将touch事件发送给客户端,比如60帧的刷新率,则每个vsync间隔16ms,在每次vsync更新的情况下,会检测当前的touch队列是否有更新,一般情况下touch的采样率会高于vsync频率,假如没有阻塞的情况下,每次vsync会至少接收到一个touch事件,而若主线程的轻微阻塞,会导致某个vsync周期内没有更新touch,这样就会出现client端少绘而导致丢帧的情况;在具体显示图像上就是用户触发了touch行为,但应用的窗口没有表现出来对应的响应。
窗口管理器检查相应的Scenegraph,以决定哪个显示窗口应该接收touch事件。其中,Scenegraph是指屏幕上的显示内容,客户端接收到touch事件开始更新渲染界面,渲染完成后将合成请求通过wayland socket发送给合成器compositor,compositor进行图像合成后在合适的时机上屏显示,使用户观察到屏幕图案被刷新。但一般情况下waylandcompositor除了接收内核事件还有其他任务需要处理,某些时候可能会造成线程阻塞,这样内核事件就不能及时被响应,导致丢帧。
图3为本申请实施例的抑制显示抖动的实现框架示意图,如图3所示,为了避免上述问题,在client端开启一个接收线程(touchThread或inputThread)来接收touch事件,即client端也具备touch事件的接收能力。client端从wayland compositor和自身的libinput接收用户的touch行为。本申请实施例中,虽然以touch事件为例来进行技术方案描述的,但本申请实施例的技术方案依然适合其他事件,例如鼠标,手写笔等输入事件,即鼠标、手写笔等的输入事件也可以作为本申请实施例的touch事件。
从wayland compositor端接收到的touch事件,根据touch事件所携带的时间戳,丢弃touch事件队列中的过期touch事件,并在wayland compositor主线程每次完成上一帧的情况下,若无新touch事件更新,则将上一帧touch事件再次向client端发送。此时,client端会接收到一个和上一帧重复的touch事件,client端对比自身的touch事件队列,若无更新的touch事件,则认为用户不再有touch行为,若存在更新的touch事件,client端此时所接收到的touch事件是需要真实更新的touch事件,但由于某种原因,waylandcompositor未能将该更新的touch事件告知client端,此时只需要将从waylandcompositor接收到的touch事件的数据替换成client端自身接收到的最新touch事件,完成新一帧的更新渲染,从而解决了即使wayland compositor端发生了touch事件丢帧问题,仍能保证client端进行正常的显示图像的更新渲染,避免了显示抖动现象。
本申请实施例中,在wayland client端从自身的libinput获得的touch事件的时间戳与来自server的wayland compositor发送的touch事件时间戳相同的情况下,则丢弃来自server的wayland compositor发送的touch事件。此时,意味着wayland compositor能及时检测touch事件,未发生丢帧现象。在wayland client端从自身的libinput获得的最新touch事件的时间戳与来自server的wayland compositor发送的touch事件时间戳不同的情况下,直接以wayland client端接收的最新touch事件替代wayland compositor发送的touch事件,进行显示图像的更新渲染。
通过图3所示的抑制显示抖动的框架结构,能够避免因wayland compositor丢帧导致的显示图像刷新抖动,提升了显示效果。
本申请实施例的技术方案无需对第三方程序进行修改,只需要在操作系统层面的相应文件库中增加对应的传输协议即可,在第三方应用调用底文件层库的情况下,即可实现相应的抑制显示抖动功能。
图4为本申请实施例的抑制显示抖动的实现信令示意图,如图4所示,本申请实施例中,对Kwin架构的工作机理进行修改,在wayland compositor端,通过在Connection::processEvents中添加相应的代码逻辑,判断eventQueue.isEmpty后,将上一个触发周期内接收到的touch事件重新emit给wayland client端,以避免丢帧导致显示图像未能及时刷新。在wayland client端,需要为每个客户端对应的进程新建一个input thread,并维护一个position queue(touch事件对应的position信息)。
wayland compositor端和client端各自通过自身的libinput接收用户针对显示窗口的操作,检测相应的touch事件。其中,在wayland compositor端在触发周期(显示帧更新周期)到来的情况下,判断touch事件队列中是否为空,若为空,则向client端发送的前一触发周期的touch事件,并在wayland compositor主线程每次完成上一帧的情况下,若无新touch事件更新,则将上一帧touch事件再次向client端发送。
此时,client端会接收到一个和上一帧重复的touch事件,client端对比自身的touch事件队列,若无更新的touch事件,则认为用户不再有touch行为,若存在更新的touch事件,即touch事件的位置改变,client端此时所接收到的touch事件是需要更新的,而wayland compositor未能将该更新的touch事件告知client端,此时,client端需要基于自身接收到的最新touch事件,完成新一帧的更新渲染。
具体地,在wayland client端接收到PositionChanged后,会触发Compositor::triggerRender调用QWaylandWindow::requestUpdate。在requestUpdate执行的情况下,对比touch事件中的position信息,如果position有更新的情况下,基于更新的position完成新一帧的更新渲染,如果touch事件中的position未更新,则从wayland client端的position队列中获取最新的position,以最新的position完成新一帧的更新渲染。
本申请实施例的技术方案,解决了即使wayland compositor端发生了touch事件丢帧问题,仍能保证client端进行正常的显示图像的更新渲染,避免了显示抖动现象。
图5为本申请实施例的抑制显示抖动的装置的组成结构示意图,如图5所示,本申请实施例的抑制显示抖动的装置包括:
第一判断单元50,用于响应于来自合成器的更新渲染请求,用于判断所述更新渲染请求与前次更新渲染请求是否相同;
获取单元51,用于在所述更新渲染请求与前次更新渲染请求相同的情况下,触发所述客户端获取自身输入线程接收的触摸事件;
第二判断单元52,用于判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,触发第一处理单元;在触摸事件不同的情况下,触发第二处理单元;
第一处理单元53,用于不响应所述更新渲染请求;
第二处理单元54,用于基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
在一个实施例中,在图5所示的抑制显示抖动的装置的基础上,本申请实施例的抑制显示抖动的装置还包括:
添加单元(图5中未示出),用于在所述输入线程检测输入驱动输入的触摸事件后,为所述触摸事件设置时间戳,将设置有时间戳的触摸事件添加于触摸事件队列中。
在一个实施例中,在图5所示的抑制显示抖动的装置的基础上,本申请实施例的抑制显示抖动的装置还包括:
第一设置单元(图5中未示出),用于为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。
在一个实施例中,在图5所示的抑制显示抖动的装置的基础上,本申请实施例的抑制显示抖动的装置还包括:
第二设置单元(图5中未示出),用于设置设定数量的所述输入线程;
分配单元(图5中未示出),用于触发所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。
在一个实施例中,所述第二处理单元54,还用于:
在所述更新渲染请求与前次更新渲染请求不同的情况下,以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,忽略所述触摸事件队列中的触摸事件。
在示例性实施例中,第一判断单元50、获取单元51、第二判断单元52、第一处理单元53、第二处理单元54、添加单元、第一设置单元、第二设置单元和分配单元等可以被一个或多个中央处理器(CPU,Central Processing Unit)、应用专用集成电路(ASIC,Application Specific Integrated Circuit)、数字信号处理器(Digital SignalProcessor,DSP)、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro ControllerUnit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述实施例的抑制显示抖动的方法的步骤。
在本公开实施例中,图5示出的抑制显示抖动的装置中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5所示的抑制显示抖动的装置适用于wayland协议的显示框架中的客户端侧。
图6为本申请实施例的抑制显示抖动的装置的组成结构示意图,如图6所示,本申请实施例的抑制显示抖动的装置包括:
检测单元60,用于在触发周期到来的情况下,检测触摸事件队列是否为空,在触摸事件队列为空的情况下,触发生成单元;
生成单元61,用于以前一触发周期内的触摸事件生成更新渲染请求;
发送单元62,用于将所述更新渲染请求向所述客户端发送。
在一个实施例中,所述发送单元62将所述更新渲染请求向所述客户端发送之后,所述检测单元60还用于在触发周期到来,检测所述触摸事件队列仍为空的情况下,所述发送单元62继续以之前所生成的更新渲染请求向所述客户端发送;在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
在一个实施例中,所述生成单元61,还用于:
在所述检测单元60检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。
在示例性实施例中,检测单元60、生成单元61和发送单元62等可以被一个或多个中央处理器(CPU,Central Processing Unit)、应用专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、数字信号处理器(Digital Signal Processor,DSP)、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述实施例的抑制显示抖动的方法的步骤。
在本公开实施例中,图6示出的抑制显示抖动的装置中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6所示的抑制显示抖动的装置适用于wayland协议的显示框架中的合成器侧。
下面,参考图7来描述根据本申请实施例的电子设备11。
如图7所示,电子设备11包括一个或多个处理器111和存储器112。
处理器111可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备11中的其他组件以执行期望的功能。
存储器112可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器111可以运行所述程序指令,以实现上文所述的本申请的各个实施例的抑制显示抖动的方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备11还可以包括:输入装置113和输出装置114,这些组件通过总线系统和/或其他形式的连接机构(图7中未示出)互连。
该输入装置113可以包括例如键盘、鼠标等等。
该输出装置114可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置114可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该电子设备11中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备11还可以包括任何其他适当的组件。
本申请实施例还记载了一种存储介质,其上存储由可执行程序,所述可执行程序被处理器执行前述实施例的抑制显示抖动的方法的步骤。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (18)
1.一种抑制显示抖动的方法,其特征在于,所述方法包括:
响应于来自合成器的更新渲染请求,客户端判断所述更新渲染请求与前次更新渲染请求是否相同;
在所述更新渲染请求与前次更新渲染请求相同的情况下,所述客户端获取自身输入线程接收的触摸事件,判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,不响应所述更新渲染请求,在触摸事件不同的情况下,基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述输入线程检测输入驱动输入的触摸事件,为所述触摸事件设置时间戳,将设置有时间戳的触摸事件添加于触摸事件队列中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
设置设定数量的所述输入线程,所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述更新渲染请求与前次更新渲染请求不同的情况下,所述客户端以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,忽略所述触摸事件队列中的触摸事件。
6.一种抑制显示抖动的方法,其特征在于,所述方法包括:
在触发周期到来的情况下,合成器检测自身的触摸事件队列,在所述触摸事件队列为空的情况下,以前一触发周期内的触摸事件生成更新渲染请求,将所生成的更新渲染请求向客户端发送。
7.根据权利要求6所述的方法,其特征在于,将所生成的更新渲染请求向所述客户端发送之后,所述方法还包括:
在触发周期到来,所述合成器检测自身的触摸事件队列仍为空的情况下,继续以之前所生成的更新渲染请求向所述客户端发送,在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
所述合成器检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。
9.一种抑制显示抖动的装置,其特征在于,所述装置包括:
第一判断单元,用于响应于来自合成器的更新渲染请求,用于判断所述更新渲染请求与前次更新渲染请求是否相同;
获取单元,用于在所述更新渲染请求与前次更新渲染请求相同的情况下,触发客户端获取自身输入线程接收的触摸事件;
第二判断单元,用于判断所述更新渲染请求中的触摸事件与所述输入线程接收的最新触摸事件是否相同,在触摸事件相同的情况下,触发第一处理单元;在触摸事件不同的情况下,触发第二处理单元;
第一处理单元,用于不响应所述更新渲染请求;
第二处理单元,用于基于所述输入线程接收的最新触摸事件进行相应场景图的更新渲染,向所述合成器输出渲染后的场景图。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
添加单元,用于在所述输入线程检测输入驱动输入的触摸事件后,为所述触摸事件设置时间戳,将设置有时间戳的触摸事件添加于触摸事件队列中。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一设置单元,用于为所述客户端中一个以上的进程分别设置对应的所述输入线程,由每个所述输入线程对自身对应的进程的触摸事件进行检测。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二设置单元,用于设置设定数量的所述输入线程;
分配单元,用于触发所述客户端检测当前的显示窗口,将设定数量的所述输入线程中的至少之一分配给所述当前的显示窗口,并由所分配的所述输入线程对触摸事件进行检测。
13.根据权利要求10所述的装置,其特征在于,所述第二处理单元,还用于:
在所述更新渲染请求与前次更新渲染请求不同的情况下,以所述更新渲染请求中的触摸事件进行相应场景图的更新渲染,忽略所述触摸事件队列中的触摸事件。
14.一种抑制显示抖动的装置,其特征在于,所述装置包括:
检测单元,用于在触发周期到来的情况下,检测触摸事件队列是否为空,在触摸事件队列为空的情况下,触发生成单元;
生成单元,用于以前一触发周期内的触摸事件生成更新渲染请求;
发送单元,用于将所述更新渲染请求向客户端发送。
15.根据权利要求14所述的装置,其特征在于,所述发送单元将所述更新渲染请求向所述客户端发送之后,所述检测单元还用于在触发周期到来,检测所述触摸事件队列仍为空的情况下,所述发送单元继续以之前所生成的更新渲染请求向所述客户端发送;在发送次数达到设定阈值或检测到新触摸事件的情况下,停止之前所生成的更新渲染请求的发送。
16.根据权利要求14或15所述的装置,其特征在于,所述生成单元,还用于:
在所述检测单元检测到触摸事件为两个以上的情况下,以时间最接近当前时刻的触摸事件生成更新渲染请求。
17.一种电子设备,包括处理器、存储器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行如权利要求1至5或6至8任一项所述的抑制显示抖动的方法的步骤。
18.一种存储介质,其上存储有可执行程序,所述可执行程序被处理器执行时实现如求1至5或6至8任一项所述的抑制显示抖动的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111392446.XA CN114115688B (zh) | 2021-11-23 | 2021-11-23 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
PCT/CN2022/105422 WO2023093076A1 (zh) | 2021-11-23 | 2022-07-13 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111392446.XA CN114115688B (zh) | 2021-11-23 | 2021-11-23 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114115688A CN114115688A (zh) | 2022-03-01 |
CN114115688B true CN114115688B (zh) | 2023-08-01 |
Family
ID=80440058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111392446.XA Active CN114115688B (zh) | 2021-11-23 | 2021-11-23 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114115688B (zh) |
WO (1) | WO2023093076A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115688B (zh) * | 2021-11-23 | 2023-08-01 | 北京字节跳动网络技术有限公司 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111793A (zh) * | 2013-04-22 | 2014-10-22 | 三星显示有限公司 | 利用图像覆盖来减小显示滞后的系统、方法和装置 |
WO2015060831A1 (en) * | 2013-10-22 | 2015-04-30 | Citrix Systems Inc. | Method and system for displaying graphics for a local virtual machine |
CN111654740A (zh) * | 2020-06-24 | 2020-09-11 | 杭州海康威视数字技术股份有限公司 | 一种在视频播放过程中渲染的方法、装置及电子设备 |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2792662C (en) * | 2011-10-18 | 2017-11-14 | Research In Motion Limited | Method of rendering a user interface |
US20140171204A1 (en) * | 2012-12-13 | 2014-06-19 | Microsoft Corporation | Asynchronous cloud rendered video delivery |
BR112017010463A2 (pt) * | 2014-11-18 | 2018-04-03 | Tactual Labs Co | sistema e método para temporizar detecção de entrada, renderização, e exibição para minimizar latência |
US9946398B2 (en) * | 2014-11-18 | 2018-04-17 | Tactual Labs Co. | System and method for timing input sensing, rendering, and display to minimize latency |
CN112614202B (zh) * | 2020-12-24 | 2023-07-14 | 北京元心科技有限公司 | Gui渲染显示的方法、终端、服务器、电子设备及存储介质 |
CN114115688B (zh) * | 2021-11-23 | 2023-08-01 | 北京字节跳动网络技术有限公司 | 抑制显示抖动的方法及装置、电子设备、存储介质 |
-
2021
- 2021-11-23 CN CN202111392446.XA patent/CN114115688B/zh active Active
-
2022
- 2022-07-13 WO PCT/CN2022/105422 patent/WO2023093076A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111793A (zh) * | 2013-04-22 | 2014-10-22 | 三星显示有限公司 | 利用图像覆盖来减小显示滞后的系统、方法和装置 |
WO2015060831A1 (en) * | 2013-10-22 | 2015-04-30 | Citrix Systems Inc. | Method and system for displaying graphics for a local virtual machine |
CN113448662A (zh) * | 2020-03-27 | 2021-09-28 | 海信电子科技(武汉)有限公司 | 窗口图像显示方法、设备及存储介质 |
CN111654740A (zh) * | 2020-06-24 | 2020-09-11 | 杭州海康威视数字技术股份有限公司 | 一种在视频播放过程中渲染的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114115688A (zh) | 2022-03-01 |
WO2023093076A1 (zh) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113368492B (zh) | 渲染的方法、装置 | |
CN111124230B (zh) | 输入响应方法、装置、电子设备及计算机可读存储介质 | |
CN114115688B (zh) | 抑制显示抖动的方法及装置、电子设备、存储介质 | |
WO2023083208A1 (zh) | 云桌面系统处理方法、云桌面系统控制方法以及相关设备 | |
CN114748873B (zh) | 界面渲染方法、装置、设备和存储介质 | |
WO2023065732A1 (zh) | 基于图形显示系统的触控处理方法及装置、电子设备、存储介质 | |
CN108933947B (zh) | 弹幕显示方法及装置 | |
CN113407138B (zh) | 应用程序的画面处理方法、装置、电子设备及存储介质 | |
CN110489318B (zh) | systrace信息的抓取方法、装置、存储介质及终端 | |
CN109831673B (zh) | 一种直播间数据处理方法、装置、设备及存储介质 | |
CN114035851B (zh) | 多系统的图形数据处理方法及装置、电子设备和存储介质 | |
US9823728B2 (en) | Method and system for reduced rate touch scanning on an electronic device | |
CN114780218A (zh) | 应用管控方法、装置、存储介质及电子设备 | |
US10061373B2 (en) | System and method for managing display-related resources | |
CN114281285B (zh) | 一种显示设备及深度数据稳定呈现的显示方法 | |
US11733955B2 (en) | Split-screen display method, electronic device, and computer-readable medium | |
CN110895457B (zh) | 字符显示方法、装置及电子设备 | |
CN111367406B (zh) | 一种小程序窗口的下拉刷新方法、装置、设备和介质 | |
EP4250109A1 (en) | Graphics processing unit invoking method, central processing unit and apparatus | |
CN118264625A (zh) | 一种基于kafka的延迟消费方法、装置、系统、介质及设备 | |
US10089121B2 (en) | System and method for managing display-related resources | |
CN117435355A (zh) | 一种数据处理方法、及相关设备 | |
CN116248913A (zh) | 一种显示设备及指令发送方法 | |
CN115756534A (zh) | 卡片界面更新方法、装置、电子设备以及存储介质 | |
CN112000407A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220330 Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. Address before: 2005, floor 2, No. 39, West Street, Haidian District, Beijing 100080 Applicant before: Beijing jingling Information System Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |