CN111459591A - 待渲染对象处理方法、装置和终端 - Google Patents
待渲染对象处理方法、装置和终端 Download PDFInfo
- Publication number
- CN111459591A CN111459591A CN202010245289.9A CN202010245289A CN111459591A CN 111459591 A CN111459591 A CN 111459591A CN 202010245289 A CN202010245289 A CN 202010245289A CN 111459591 A CN111459591 A CN 111459591A
- Authority
- CN
- China
- Prior art keywords
- rendered
- thread
- rendering
- sub
- target object
- 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
Links
Images
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/80—Creating or modifying a manually drawn or painted image using a manual input device, e.g. mouse, light pen, direction keys on keyboard
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种待渲染对象处理方法、装置和终端,属于图像处理技术领域。所述方法包括:通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,目标待渲染对象为至少一个第一待渲染对象中的部分或者全部待渲染对象;通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,通过主线程响应于编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。本申请由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
Description
技术领域
本申请涉及图像处理技术领域,特别涉及一种待渲染对象处理方法、装置和终端。
背景技术
终端中一般都安装电子白板应用,用户可以在电子白板应用中绘制批注标记图案。当用户对批注标记图案进行擦除后,终端需要对该批注标记图案进行重新渲染,从而得到两端圆滑的批注标记图案。
相关技术中,终端中的主线程在对批注标记图案进行重新渲染时,主线程接收到新任务的时候,会等待主线程中的批注标记图案渲染完毕后才响应该新任务,导致响应效率低,影响用户体验。
发明内容
本申请实施例提供了待渲染对象处理方法、装置和终端,可以提高响应效率,提升用户体验感。所述技术方案如下:
一方面,提供了一种待渲染对象处理方法,所述方法包括:
通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,所述目标待渲染对象为所述至少一个第一待渲染对象中的部分或者全部待渲染对象;
通知子线程停止对所述至少一个第一待渲染对象的渲染操作,以及,通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象。
在一种可能的实现方式中,在所述通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作之后,所述方法还包括:
判断所述子线程是否在对所述至少一个第一待渲染对象进行渲染操作;
在所述子线程在对所述至少一个第一待渲染对象进行渲染操作的情况下,执行所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作的步骤。
在另一种可能的实现方式中,所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作,包括:
通过所述主线程,在所述子线程中将第一渲染标记位设置为第一数值,所述第一渲染标记位用于所述子线程每对一个第一待渲染对象进行渲染操作时读取一次;
在所述子线程读取到第一渲染标记位为所述第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
在另一种可能的实现方式中,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作,包括:
当所述子线程当前尚未对所述目标待渲染对象进行渲染操作时,通过所述主线程,在所述子线程中将所述目标待渲染对象的第二渲染标记位设置为第二数值;
当通过所述子线程对所述目标待渲染对象进行渲染操作时,通过所述子线程读取所述目标待渲染对象的第二渲染标记位;
在所述子线程读取到所述第二渲染标记位为所述第二数值的情况下,停止对所述目标待渲染对象的渲染操作。
在另一种可能的实现方式中,所述通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象之后,所述方法还包括:
当响应于所述编辑操作结束时,通过所述子线程和所述主线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中。
在另一种可能的实现方式中,所述将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
通过所述主线程通知所述子线程对所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象进行渲染;
通过所述子线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象绘制到位图上;
当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象时,通过所述主线程,将所述位图上的内容渲染到所述界面。
在另一种可能的实现方式中,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个待渲染对象中的部分待渲染对象;所述将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
当所述子线程已经将部分第一待渲染对象绘制到位图上,且所述目标待渲染对象未绘制到所述位图上时,通过所述子线程将所述第二待渲染对象和所述至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;
当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象完成时,通过所述主线程,将所述位图上的内容渲染到所述界面。
另一方面,提供了一种待渲染对象处理装置,所述装置包括:
接收模块,用于通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,所述目标待渲染对象为所述至少一个第一待渲染对象中的部分或者全部待渲染对象;
通知模块,用于通知子线程停止对所述至少一个第一待渲染对象的渲染操作;
编辑模块,用于通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象。
在一种可能的实现方式中,所述装置还包括:
判断模块,用于判断所述子线程是否在对所述至少一个第一待渲染对象进行渲染操作;
所述通知模块,还用于在所述子线程在对所述至少一个第一待渲染对象进行渲染操作的情况下,通知子线程停止对所述至少一个第一待渲染对象的渲染操作。
在另一种可能的实现方式中,所述通知模块,还用于通过所述主线程,在所述子线程中将第一渲染标记位设置为第一数值,所述第一渲染标记位用于所述子线程每对一个第一待渲染对象进行渲染操作时读取一次;在所述子线程读取到第一渲染标记位为所述第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
在另一种可能的实现方式中,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;所述通知模块,还用于当所述子线程当前尚未对所述目标待渲染对象进行渲染操作时,通过所述主线程,在所述子线程中将所述目标待渲染对象的第二渲染标记位设置为第二数值;当通过所述子线程对所述目标待渲染对象进行渲染操作时,通过所述子线程读取所述目标待渲染对象的第二渲染标记位;在所述子线程读取到所述第二渲染标记位为所述第二数值的情况下,停止对所述目标待渲染对象的渲染操作。
在另一种可能的实现方式中,所述装置还包括:
渲染模块,用于当响应于所述编辑操作结束时,通过所述子线程和所述主线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中。
在另一种可能的实现方式中,所述渲染模块,还用于通过所述主线程通知所述子线程对所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象进行渲染;通过所述子线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象绘制到位图上;当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象时,通过所述主线程,将所述位图上的内容渲染到所述界面。
在另一种可能的实现方式中,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个待渲染对象中的部分待渲染对象;所述渲染模块,还用于当所述子线程已经将部分第一待渲染对象绘制到位图上,且所述目标待渲染对象未绘制到所述位图上时,通过所述子线程将所述第二待渲染对象和所述至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象完成时,通过所述主线程,将所述位图上的内容渲染到所述界面。
另一方面,提供了一种终端,所述终端包括:
处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述任一实现方式所述的待渲染对象处理方法中的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述任一实现方式所述的待渲染对象处理方法中的操作。
另一方面,提供了一种计算机程序产品,所述计算机程序产品中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述任一实现方式所述的待渲染对象处理方法中的操作。
本申请实施例提供的技术方案带来的有益效果是:
在本申请实施例中,当主线程接收到对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
图1是本申请实施例提供的一种终端包括主线程和子线程的示意图;
图2是本申请实施例提供的一种主线程的执行流程图;
图3是本申请实施例提供的一种子线程的执行流程图;
图4是本申请实施例提供的一种待渲染对象处理方法的方法流程图;
图5是本申请实施例提供的一种待渲染对象处理方法的方法流程图;
图6是本申请实施例提供的一种批注标记图案的示意图;
图7是本申请实施例提供的一种对批注标记图案进行擦除操作的示意图;
图8是本申请实施例提供的一种对擦除后的批注标记图案重新渲染的示意图;
图9是本申请实施例提供的一种待渲染对象处理方法的方法流程图;
图10是本申请实施例提供的一种待渲染对象处理装置结构示意图;
图11是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的技术方案和优点更加清楚,下面对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种待渲染对象处理方法,该方法应用在终端中。终端中安装绘制应用,用户可以在该绘制应用中绘制任一待渲染对象。其中,该绘制应用可以为电子白板、画图应用或者社交应用等任一具有绘制功能的应用。其中,用户在终端中绘制待渲染对象之后,如果对该渲染对象进行擦除时,为了使得被擦除的渲染对象的两端圆滑需要重新进行渲染。如果终端的主线程一条一条的绘制所有渲染对象会阻塞主线程接收用户的擦除操作,所以终端的子线程将所有渲染对象绘制到位图上;当子线程完成一次完整的位图时,通知主线程将位图上的内容渲染到用户界面中,从而将用户界面进行展示。
相应的,参见图1,终端包括主线程和子线程。其中,参见图2,主线程,用于响应用户对至少一个第一待渲染对象的编辑操作,判断子线程中当前是否在对第一待渲染对象进行渲染操作;当子线程当前在对第一待渲染对象进行渲染操作时,停止子线程的渲染操作;当子线程当前未对第一待渲染对象进行渲染操作时,响应该编辑操作;当响应该编辑操作结束时,通知子线程开启渲染操作。
第一待渲染对象的数量可以为一个或者多个。在本申请实施例中,以第一待渲染对象的数量为多个为例进行说明。在子线程绘制第一待渲染对象的过程中,当主线程接收到用户对多个第一待渲染对象中的目标待渲染对象的编辑操作时,主线程通知子线程停止对所有第一待渲染对象的渲染操作。其中,目标待渲染对象可以为多个第一待渲染对象中的部分或者全部待渲染对象。例如,第一待渲染对象的数量为5,则目标待渲染对象的数量可以为1、2、3、4或者5。
参见图3,当绘制界面中包括多个第一待渲染对象时,子线程对多个第一待渲染对象按照在Z轴上的顺序进行渲染,将多个第一待渲染对象绘制到位图上。并且,子线程每绘制一个第一待渲染对象,判断是否需要停止绘制操作(由主线程决定);当需要停止绘制操作时,停止对所有第一待渲染对象的绘制操作。并且,子线程在位图上绘制完所有第一待渲染对象时,通知主线程将位图上的内容渲染到用户界面。
在本申请实施例中,当主线程接收到用户对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于当主线程接收到用户对目标待渲染对象的编辑操作时,由于停止子线程的渲染操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
其中,终端可以为手机、平板电脑、PC(personal computer,个人计算机)设备或者穿戴设备等;在本申请实施例中,对终端不作具体限定。
本申请实施例提供了一种待渲染对象处理方法的流程图,该方法应用在终端中;参见图4,该方法包括:
步骤401:通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,目标待渲染对象为至少一个第一待渲染对象中的部分或者全部待渲染对象。
步骤402:通知子线程停止对至少一个第一待渲染对象的渲染操作。
步骤403:通过主线程响应于编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。
在一种可能的实现方式中,在通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作之后,方法还包括:
判断子线程是否在对至少一个第一待渲染对象进行渲染操作;
在子线程在对至少一个第一待渲染对象进行渲染操作的情况下,执行通知子线程停止对至少一个第一待渲染对象的渲染操作的步骤。
在另一种可能的实现方式中,通知子线程停止对至少一个第一待渲染对象的渲染操作,包括:
通过主线程,在子线程中将第一渲染标记位设置为第一数值,第一渲染标记位用于子线程每对一个第一待渲染对象进行渲染操作时读取一次;
在子线程读取到第一渲染标记位为第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
在另一种可能的实现方式中,第一待渲染对象的数量为多个,且目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;通知子线程停止对至少一个第一待渲染对象的渲染操作,包括:
当子线程当前尚未对目标待渲染对象进行渲染操作时,通过主线程,在子线程中将目标待渲染对象的第二渲染标记位设置为第二数值;
当通过子线程对目标待渲染对象进行渲染操作时,通过子线程读取目标待渲染对象的第二渲染标记位;
在子线程读取到第二渲染标记位为第二数值的情况下,停止对目标待渲染对象的渲染操作。
在另一种可能的实现方式中,通过主线程响应于编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象之后,方法还包括:
当响应于编辑操作结束时,通过子线程和主线程,将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象,渲染到界面中。
在另一种可能的实现方式中,将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
通过主线程通知子线程对第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象进行渲染;
通过子线程,将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象绘制到位图上;
当在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象时,通过主线程,将位图上的内容渲染到界面。
在另一种可能的实现方式中,第一待渲染对象的数量为多个,且目标待渲染对象为多个待渲染对象中的部分待渲染对象;将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
当子线程已经将部分第一待渲染对象绘制到位图上,且目标待渲染对象未绘制到位图上时,通过子线程将第二待渲染对象和至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;
当在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象完成时,通过主线程,将位图上的内容渲染到界面。
在本申请实施例中,当主线程接收到用户对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
在本申请实施例中,主线程确定需要对第一待渲染对象进行渲染时,启动子线程,通过子线程将第一待渲染对象绘制到位图中。当主线程接收到对第一待渲染对象的编辑操作时,通知子线程停止对第一待渲染对象的绘制操作。此时会存在两种情况:第一:子线程当前正在对第一待渲染对象进行绘制;第二:子线程当前未对第一待渲染对象进行绘制。下面分别以两个实施例,对这两种情况进行详细说明。
本申请实施例提供了一种待渲染对象处理方法的流程图。在本申请实施例中,以第一待渲染对象为多个,且只设置一个渲染标记位,该渲染标记位不与任何第一待渲染对象关联。只要渲染标记位表示停止渲染操作,子线程就停止渲染操作为例进行说明。参见图5,该方法包括:
步骤501:子线程在对多个第一渲染对象进行渲染的过程中,主线程接收用户对多个第一待渲染对象中的目标待渲染对象的编辑操作。
目标待渲染对象可以为多个第一待渲染对象中的部分或者全部待渲染对象。例如,目标待渲染对象可以为多个第一待渲染对象中的一个待渲染对象。
终端显示绘制界面,用户可以在绘制界面中进行绘制,用户在终端中绘制之后,如果对某个或某几个已绘制的对象进行编辑,例如擦除,为了使得已被编辑的对象的两端圆滑,则终端会对已被编辑的对象重新进行渲染,已被编辑且需要渲染的对象即为第一待渲染对象。终端可以通过子线程对多个第一待渲染对象进行渲染,在子线程对多个第一待渲染对象进行渲染的过程中,用户还可以对目标待渲染对象进行编辑操作。
其中,第一待渲染对象可以为任一图案;例如,第一待渲染对象可以为批注标记图案等。编辑操作可以为擦除操作等。例如,子线程在对多个批注标记图案进行渲染的过程中,用户对该多个批注标记图案中的目标批注标记图案不满意时,可以使用橡皮擦在绘制界面中擦除该目标批注标记图案的部分内容。
需要说明的一点是,主线程接收到编辑操作之后,可以先判断子线程是否在对多个第一待渲染对象进行渲染操作;在子线程在对多个第一待渲染对象进行渲染操作的情况下,执行步骤502。
步骤502:主线程在子线程中,将第一渲染标记位设置为第一数值。
第一数值可以为任意数值;在本申请实施例中,以第一数值为1为例进行说明。并且,主线程在将第一渲染标记位设置为第一数值之前,第一渲染标记位可以为第三数值,第三数值可以为除第一数值以外的任意数值;例如,第三数值可以为0。
子线程对多个第一待渲染对象按照在Z轴上的顺序进行渲染,将多个第一待渲染对象绘制到位图上。并且,子线程每绘制一个第一待渲染对象,读取一次第一渲染标记位。
步骤503:在子线程读取到第一渲染标记位为第一数值的情况下,子线程停止对未渲染的第一待渲染对象的渲染操作。
需要说明的一点是,在子线程读取到第一渲染标记位不为第一数值的情况下,子线程继续对未渲染的第一待渲染对象的渲染操作。
例如,绘制界面中包括3个第一待渲染对象,分别为待渲染对象1、待渲染对象2和待渲染对象3。子线程按照待渲染对象1、2和3的顺序,将3个第一待渲染对象绘制到位图上。并且,子线程在将待渲染对象1绘制到位图上时,读取一次第一渲染标记位。在第一渲染标记位为第一数值的情况下,子线程停止对待渲染对象1、2和3的渲染操作。在第一渲染标记位不为第一数值的情况下,子线程对待渲染对象1进行渲染操作。
子线程对待渲染对象1进行渲染操作之后,再次读取一次第一渲染标记位,在再次读取到第一渲染标记位为第一数值的情况下,子线程停止对待渲染对象2和3的渲染操作。当再次读取到第一渲染标记位不为第一数值的情况下,子线程对待渲染对象2进行渲染操作。
子线程对待渲染对象2进行渲染操作之后,再次读取一次第一渲染标记位;在再次读取到第一渲染标记位为第一数值的情况下,子线程停止对渲染对象3的渲染操作。当再次读取到第一渲染标记位不为第一数值的情况下,子线程对待渲染对象3进行渲染操作。
在本申请实施例中,在子线程读取到第一渲染标记位为第一数值的情况下,就说明主线程此时已经接收到用户对目标待渲染对象的编辑操作,此时第一待渲染对象发生了变化,不是之前的第一待渲染对象,即时继续完成对之前的第一待渲染对象的渲染,渲染结束后还需要重新对变化后得到的第二待渲染对象进行重选渲染。因此,此时继续对第一待渲染对象进行渲染操作,已经没有意义了,不仅导致渲染效率低;而且还会阻塞主线程,导致卡顿。而子线程停止对第一待渲染对象的渲染操作,不仅可以提高渲染效率,还可以克服卡顿的问题。
步骤504:主线程响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。
当编辑操作为擦除操作时,主线程对目标待渲染对象进行擦除操作,得到第二待渲染对象;例如,参见图6,第一待渲染对象是批注标记图案,主线程对批注图案进行擦除之后,得到的第二待渲染对象如图7所示。
需要说明的一点是,子线程在将多个第一待渲染对象按照在Z轴上的顺序进行渲染,将多个第一待渲染对象绘制到位图上。由此可见,子线程在渲染的过程中是依赖于响应前的第一待渲染对象的坐标信息的。先执行步骤502-503再执行步骤504,能够避免子线程还没有停止对第一待渲染对象的渲染操作,也即子线程仍然对第一待渲染对象进行渲染的过程中,第一待渲染对象可能被主线程进行了编辑,这样第一待渲染对象的坐标信息就会被改变。子线程就无法访问第一待渲染对象,导致程序崩溃的问题。因此,先执行步骤502-503,再执行步骤504,能够避免程序崩溃,提高稳定性。
本发明另一个实施例中,终端也可以先执行步骤504,再执行步骤502-503。
步骤505:当响应于编辑操作结束时,子线程和主线程将第二待渲染对象和多个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象,渲染到用户界面中。
本步骤中的待渲染对象是指绘制界面中的所有待渲染对象,包括多个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象和第二待渲染对象。在一种可能的实现方式中,本步骤可以通过以下步骤(1)至(3)实现,包括:
(1)主线程通知子线程对第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象进行渲染。
在一种可能的实现方式中,主线程向子线程发送第一渲染请求,以通知子线程对第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象进行渲染,
在本申请实施例中,主线程直接向子线程发送第一渲染请求,以通知子线程对待渲染对象进行渲染,从而能够及时通知到子线程,确保了可靠性。较优地,在发送第一渲染请求之前,可以将第一渲染标记位设置为第三数值。
在另一种可能的实现方式中,主线程将第一渲染标记位由第一数值修改为第三数值。子线程周期性读取第一渲染标记位;在子线程读取到第一渲染标记位为第三数值的情况下,子线程确定需要对第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象进行渲染了。
在本申请实施例中,主线程通过修改第一标记位通知子线程对待渲染对象进行渲染,操作简单。
在本申请实施例中,当子线程在渲染多个第一待渲染对象的过程中;当接收到对目标待渲染对象的编辑操作时,停止子线程对第一待渲染对象的渲染操作,这样能够节省资源;并且,当主线程响应完用户的编辑操作时,通知子线程重新对待渲染对象的渲染操作,提高了渲染效率。
(2)子线程将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象绘制到位图上。
需要说明的一点是,子线程按照第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象在Z轴上进行排序,将排序后的第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象依次绘制到位图上。
需要说明的另一点是,子线程将待渲染对象绘制到位图上的同时,能够对待渲染对象进行优化处理;例如,继续参见图7,这个批注标记图案在被橡皮擦后会导致擦断处不圆滑。而子线程将批注标记图案渲染到位图上时,对不圆滑的两端进行圆滑处理,如图8所示。
需要说明的一点是,在子线程将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象一次绘制到位图上的过程中,一旦用户又有编辑操作,也即主线程再次接收到编辑操作,主线程会再次将第一渲染标记位设置为第一数值。子线程读取第一标记位为第一数值的情况下,子线程停止绘制操作。并且,在子线程下次启动绘制后,重新进行绘制,从而即时用户将已绘制到位图上的待渲染对象修改后,子线程还可以重新在位图上绘制待渲染对象。
(3)当子线程在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象时,主线程将位图上的内容渲染到用户界面。
当子线程在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象时,子线程通知主线程对位图上的内容进行渲染。
在本申请实施例中,当子线程在渲染第一待渲染对象的过程中;当主线程接收到对目标待渲染对象的编辑操作时,停止子线程对待渲染对象的渲染操作,从而停止没有意义的渲染操作,不仅能够节省资源,还能提高渲染效率。
并且,当主线程接收到用户对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
本申请实施例提供了一种待渲染对象处理方法的流程图。在本申请实施例中,以第一待渲染对象为多个,目标待渲染对象为一个,且可以为目标待渲染对象设置一个渲染标记位,该渲染标记位与目标待渲染对象关联为例进行说明。
参见图9,该方法包括:
步骤901:子线程在对多个第一渲染对象进行渲染的过程中,主线程接收用户对多个第一待渲染对象中的目标待渲染对象的编辑操作。
本步骤和步骤501相同,在此不再赘述。
需要说明的一点是,主线程接收到编辑操作之后,可以先判断子线程是否正在对目标待渲染对象进行渲染操作或者已经对目标待渲染对象进行渲染操作;当子线程尚未对目标待渲染对象进行渲染操作的情况下,执行步骤902。
步骤902:当子线程当前尚未对目标待渲染对象进行渲染操作时,主线程在子线程中将目标待渲染对象的第二渲染标记位设置为第二数值。
第二数值和第一数值可以相同,也可以不同;在本申请实施例中,对此不作具体限定。在本步骤中,主线程需要先确定当前是否已对目标待渲染对象进行渲染操作。当子线程当前尚未对目标待渲染对象进行渲染操作时,主线程才将目标待渲染对象的第二渲染标记位设置为第二数值。当子线程当前已经对目标待渲染对象进行渲染操作时,则直接停止对所有待渲染对象的渲染操作,即可以是按照步骤502-505进行处理。
其中,主线程确定子线程当前是否已对目标待渲染对象进行渲染操作时,主线程可以直接询问子线程的渲染情况,从而判断子线程当前是否已对目标待渲染对象进行渲染操作,也即以下第一种实现方式;主线程还可以通过子线程的渲染记录,判断子线程当前是否已对目标待渲染对象进行渲染操作,也即以下第二种实现方式。
对于第一种方式,本步骤可以通过以下步骤(1)至(5)实现,包括:
(1)主线程向子线程发送查询请求,该查询请求携带目标待渲染对象的对象标识。
目标待渲染对象的对象标识可以为目标待渲染对象的绘制时间或者目标待渲染对象的编号等。
(2)子线程接收该查询请求,根据该目标待渲染对象的对象标识,确定是否已对目标待渲染对象进行渲染操作。
(3)当已对目标待渲染对象进行渲染操作时,子线程向主线程返回第一查询响应,第一查询响应用于指示子线程已对目标待渲染对象进行渲染操作。
(4)当尚未对目标待渲染对象进行渲染操作时,子线程向主线程返回第二查询响应,第二查询响应用于指示子线程尚未对目标待渲染对象进行渲染操作。
(5)主线程接收子线程返回的查询响应,根据该查询响应,确定子线程当前是否对目标待渲染对象进行渲染操作。
当主线程接收到的查询响应是第一查询响应时,主线程确定子线程已对目标待渲染对象进行渲染操作;当主线程接收到的查询响应是第二查询响应,主线程确定子线程当前尚未对目标待渲染对象进行渲染操作。
在本申请实施例中,主线程直接询问子线程当前是否已对目标待渲染对象进行渲染操作,从而保证了可靠性,并且直接由子线程返回结果,这样不需要主线程做过多的判断,进一步节省了主线程的资源,避免主线程阻塞,影响用户操作,提高了主线程响应用户操作的效率。
对于第二种方式,主线程接收到目标待渲染对象的渲染任务时,将目标待渲染对象的对象标识添加到渲染列表中,将目标待渲染对象的第三渲染标记位设置为第四数值;当子线程对目标待渲染对象进行渲染操作时,主线程将目标待渲染对象的第三渲染标记位由第四数值修改为第五数值;当子线程对目标待渲染对象渲染完成时,主线程将目标待渲染对象的第三渲染标记位由第五数值修改为第六数值。这样主线程可以根据目标待渲染对象的第三渲染标记位确定目标待渲染对象的渲染状态。相应的,主线程判断子线程当前是否已对目标待渲染对象进行渲染操作的步骤可以为:主线程获取目标待渲染对象的第三渲染标记位;在目标待渲染对象的第三渲染标记位为第五数值或第六数值的情况下,确定子线程当前已对目标待渲染对象进行渲染操作。在目标待渲染对象的第三渲染标记位不为第五数值或第六数值的情况下,确定子线程当前尚未对目标待渲染对象进行渲染操作。
需要说明的一点是,在目标待渲染对象的第三渲染标记位是第五数值和第六数值的情况下,子线程当前已经对目标待渲染对象进行了渲染操作,或者子线程已经完成了对目标待渲染对象的渲染操作,子线程直接停止对所有待渲染对象的渲染操作,即可以是按照步骤502-505进行处理。在目标待渲染对象的第三渲染标记位是除第五数值和除第六数值以外的其他数值的情况下,子线程才会将目标待渲染对象的第二渲染标记位设置为第二数值。
需要说明的一点是,当子线程对目标待渲染对象开始渲染后,主线程也可以不修改第一待渲染对象的第三渲染标记位,而直接将目标待渲染对象的对象标识从渲染列表中删除;相应的,主线程判断子线程当前是否在对目标待渲染对象进行渲染操作的步骤可以为:当渲染列表中不存在目标待渲染对象的对象标识,主线程确定子线程当前已对目标待渲染对象进行渲染操作。当渲染列表中存在目标待渲染对象的对象标识,主线程确定子线程当前尚未对目标待渲染对象进行渲染操作。
需要说明的另一点是,第四数值、第五数值和第六数值为互不相同的任意数值;例如,第四数值为0,第五数值为1,第六数值为2。
步骤903:当子线程对目标待渲染对象进行渲染操作时,子线程读取目标待渲染对象的第二渲染标记位。
在本申请实施例中,每个待渲染对象都有一个独立的第二渲染标记位;子线程在对某个待渲染对象进行渲染操作时,读取这个待渲染对象对应的第二渲染标记位。
需要说明的一点是,每个待渲染对象对应的第二待渲染标记位可以是以对应关系的形式存储;相应的,在本步骤中,子线程根据该目标待渲染对象的对象标识,从对象标识和第二渲染标记位的对应关系中获取目标待渲染对象的第二渲染标记位。
步骤904:在第二渲染标记位为第二数值的情况下,子线程停止对目标待渲染对象的渲染操作。
需要说明的一点是,子线程可以仅停止对目标待渲染对象的渲染操作,也可以停止未渲染的所有待渲染对象的渲染操作。
步骤905:主线程响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。
本步骤和步骤305相同,在此不再赘述。
步骤906:当响应于编辑操作结束时,子线程和主线程将待渲染对象,渲染到用户界面中。
本步骤中的待渲染对象是指绘制界面中的所有待渲染对象,包括第一待渲染对象和第二待渲染对象。在一种可能的实现方式中,本步骤可以通过以下步骤(1)至(2)实现,包括:
(1)当子线程已经将部分第一待渲染对象绘制到位图上,且目标待渲染对象未绘制到位图上,子线程将第二待渲染对象和多个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上。
由于未对已经绘制到位图上的第一待渲染对象进行编辑,因此,不需要重复将这些第一待渲染对象进行重新渲染,节省了资源,提高了效率。
(2)当在位图上绘制完第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,主线程将位图上的内容渲染到用户界面。
本步骤和步骤506中的步骤(3)相同,在此不再赘述。
在本申请实施例中,当主线程接收到用户对目标待渲染对象的编辑操作时,通知子线程停止对目标待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
本申请实施例提供了一种待渲染对象处理装置,参见图10,该装置包括:
接收模块1001,用于通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,目标待渲染对象为至少一个第一待渲染对象中的部分或者全部待渲染对象;
通知模块1002,用于通知子线程停止对至少一个第一待渲染对象的渲染操作;
编辑模块1003,用于通过主线程响应于编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。
在一种可能的实现方式中,装置还包括:
判断模块,用于判断子线程是否在对至少一个第一待渲染对象进行渲染操作;
通知模块1002,还用于在子线程在对至少一个第一待渲染对象进行渲染操作的情况下,通知子线程停止对至少一个第一待渲染对象的渲染操作。
在一种可能的实现方式中,通知模块1002,还用于通过主线程,在子线程中将第一渲染标记位设置为第一数值,第一渲染标记位用于子线程每对一个第一待渲染对象进行渲染操作时读取一次;在子线程读取到第一渲染标记位为第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
在一种可能的实现方式中,第一待渲染对象的数量为多个,且目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;通知模块1002,还用于当子线程当前尚未对目标待渲染对象进行渲染操作时,通过主线程,在子线程中将目标待渲染对象的第二渲染标记位设置为第二数值;当通过子线程对目标待渲染对象进行渲染操作时,通过子线程读取目标待渲染对象的第二渲染标记位;在子线程读取到第二渲染标记位为第二数值的情况下,停止对目标待渲染对象的渲染操作。
在一种可能的实现方式中,装置还包括:
渲染模块,用于当响应于编辑操作结束时,通过子线程和主线程,将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象,渲染到界面中。
在一种可能的实现方式中,渲染模块,还用于通过主线程通知子线程对第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象进行渲染;通过子线程,将第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象绘制到位图上;当在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象时,通过主线程,将位图上的内容渲染到界面。
在一种可能的实现方式中,第一待渲染对象的数量为多个,且目标待渲染对象为多个待渲染对象中的部分待渲染对象;渲染模块,还用于当子线程已经将部分第一待渲染对象绘制到位图上,且目标待渲染对象未绘制到位图上时,通过子线程将第二待渲染对象和至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;当在位图上绘制完第二待渲染对象和至少一个第一待渲染对象中除目标待渲染对象以外的第一待渲染对象完成时,通过主线程,将位图上的内容渲染到界面。
需要说明的一点是,接收模块1001、通知模块1002和编辑模块1003均可以由终端中的处理器来执行。
在本申请实施例中,当主线程接收到用户对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
图11是本申请实施例提供的一种终端1100的结构框图。例如,该1100可以用于执行上述各个实施例中提供的待渲染对象处理方法。参见图11,该终端1100包括:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的待渲染对象处理方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS、中国的北斗系统或欧盟的伽利略系统的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1111以及接近传感器1116。
加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1111用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1111采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1111采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在本申请实施例中,当主线程接收到用户对第一待渲染对象的编辑操作时,通知子线程停止对第一待渲染对象的渲染操作,以及,响应于该编辑操作,对第一待渲染对象进行编辑,得到第二待渲染对象,当响应于该编辑操作结束时,通知子线程对第二待渲染对象进行渲染。由于当主线程接收到对第一待渲染对象的编辑操作时,子线程对第一待渲染对象进行渲染已经没有意义了,通知子线程停止对第一待渲染对象的渲染操作,这样当响应于编辑操作结束时,子线程能够及时对第二待渲染对象进行渲染,从而提高了渲染效率。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质应用于终端,该计算机可读存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现上述实施例的待渲染对象处理方法中终端所执行的操作。
在本申请实施例中,当主线程接收到对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述实施例的待渲染对象处理方法中终端所执行的操作。
在本申请实施例中,当主线程接收到对目标待渲染对象的编辑操作时,通知子线程停止对至少一个第一待渲染对象的渲染操作,以及,响应于该编辑操作,对目标待渲染对象进行编辑,得到第二待渲染对象。由于将渲染操作通过子线程来执行,当主线程接收到用户对目标待渲染对象的编辑操作时,通过停止子线程的渲染操作,由主线程响应编辑操作,从而可以使得主线程不卡顿。并且,主线程及时响应了用户的编辑操作,从而提高了响应效率,进而提升了用户体验感。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅是为了便于本领域的技术人员理解本申请的技术方案,并不用以控制本申请。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种待渲染对象处理方法,其特征在于,所述方法包括:
通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,所述目标待渲染对象为所述至少一个第一待渲染对象中的部分或者全部待渲染对象;
通知子线程停止对所述至少一个第一待渲染对象的渲染操作,以及,通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象。
2.根据权利要求1所述的方法,其特征在于,在所述通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作之后,所述方法还包括:
判断所述子线程是否在对所述至少一个第一待渲染对象进行渲染操作;
在所述子线程在对所述至少一个第一待渲染对象进行渲染操作的情况下,执行所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作的步骤。
3.根据权利要求1所述的方法,其特征在于,所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作,包括:
通过所述主线程,在所述子线程中将第一渲染标记位设置为第一数值,所述第一渲染标记位用于所述子线程每对一个第一待渲染对象进行渲染操作时读取一次;
在所述子线程读取到第一渲染标记位为所述第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
4.根据权利要求1所述的方法,其特征在于,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;所述通知子线程停止对所述至少一个第一待渲染对象的渲染操作,包括:
当所述子线程当前尚未对所述目标待渲染对象进行渲染操作时,通过所述主线程,在所述子线程中将所述目标待渲染对象的第二渲染标记位设置为第二数值;
当通过所述子线程对所述目标待渲染对象进行渲染操作时,通过所述子线程读取所述目标待渲染对象的第二渲染标记位;
在所述子线程读取到所述第二渲染标记位为所述第二数值的情况下,停止对所述目标待渲染对象的渲染操作。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象之后,所述方法还包括:
当响应于所述编辑操作结束时,通过所述子线程和所述主线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中。
6.根据权利要求5所述的方法,其特征在于,所述将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
通过所述主线程通知所述子线程对所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象进行渲染;
通过所述子线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象绘制到位图上;
当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象时,通过所述主线程,将所述位图上的内容渲染到所述界面。
7.根据权利要求5所述的方法,其特征在于,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个待渲染对象中的部分待渲染对象;所述将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中,包括:
当所述子线程已经将部分第一待渲染对象绘制到位图上,且所述目标待渲染对象未绘制到所述位图上时,通过所述子线程将所述第二待渲染对象和所述至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;
当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象完成时,通过所述主线程,将所述位图上的内容渲染到所述界面。
8.一种待渲染对象处理装置,其特征在于,所述装置包括:
接收模块,用于通过主线程,接收对至少一个第一待渲染对象中的目标待渲染对象的编辑操作,所述目标待渲染对象为所述至少一个第一待渲染对象中的部分或者全部待渲染对象;
通知模块,用于通知子线程停止对所述至少一个第一待渲染对象的渲染操作;
编辑模块,用于通过所述主线程响应于所述编辑操作,对所述目标待渲染对象进行编辑,得到第二待渲染对象。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述子线程是否在对所述至少一个第一待渲染对象进行渲染操作;
所述通知模块,还用于在所述子线程在对所述至少一个第一待渲染对象进行渲染操作的情况下,通知子线程停止对所述至少一个第一待渲染对象的渲染操作。
10.根据权利要求8所述的装置,其特征在于,所述通知模块,还用于通过所述主线程,在所述子线程中将第一渲染标记位设置为第一数值,所述第一渲染标记位用于所述子线程每对一个第一待渲染对象进行渲染操作时读取一次;在所述子线程读取到第一渲染标记位为所述第一数值的情况下,停止对未渲染的第一待渲染对象的渲染操作。
11.根据权利要求8所述的装置,其特征在于,所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个第一待渲染对象中的部分待渲染对象;所述通知模块,还用于当所述子线程当前尚未对所述目标待渲染对象进行渲染操作时,通过所述主线程,在所述子线程中将所述目标待渲染对象的第二渲染标记位设置为第二数值;当通过所述子线程对所述目标待渲染对象进行渲染操作时,通过所述子线程读取所述目标待渲染对象的第二渲染标记位;在所述子线程读取到所述第二渲染标记位为所述第二数值的情况下,停止对所述目标待渲染对象的渲染操作。
12.根据权利要求8-11任一项所述的装置,其特征在于,所述装置还包括:
渲染模块,用于当响应于所述编辑操作结束时,通过所述子线程和所述主线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象,渲染到界面中。
13.根据权利要求12所述的装置,其特征在于,所述渲染模块,还用于通过所述主线程通知所述子线程对所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象进行渲染;通过所述子线程,将所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象绘制到位图上;当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象时,通过所述主线程,将所述位图上的内容渲染到所述界面;或者,
所述第一待渲染对象的数量为多个,且所述目标待渲染对象为多个待渲染对象中的部分待渲染对象;所述渲染模块,还用于当所述子线程已经将部分第一待渲染对象绘制到位图上,且所述目标待渲染对象未绘制到所述位图上时,通过所述子线程将所述第二待渲染对象和所述至少一个第一待渲染对象中未渲染到位图上的第一待渲染对象绘制到位图上;当在所述位图上绘制完所述第二待渲染对象和所述至少一个第一待渲染对象中除所述目标待渲染对象以外的第一待渲染对象完成时,通过所述主线程,将所述位图上的内容渲染到所述界面。
14.一种终端,其特征在于,所述终端包括:
处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现权利要求1-7任一项所述的待渲染对象处理方法中的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010245289.9A CN111459591B (zh) | 2020-03-31 | 2020-03-31 | 待渲染对象处理方法、装置和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010245289.9A CN111459591B (zh) | 2020-03-31 | 2020-03-31 | 待渲染对象处理方法、装置和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459591A true CN111459591A (zh) | 2020-07-28 |
CN111459591B CN111459591B (zh) | 2023-03-28 |
Family
ID=71680916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010245289.9A Active CN111459591B (zh) | 2020-03-31 | 2020-03-31 | 待渲染对象处理方法、装置和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459591B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113648655A (zh) * | 2021-07-21 | 2021-11-16 | 网易(杭州)网络有限公司 | 虚拟模型的渲染方法、装置、存储介质和电子设备 |
WO2023083064A1 (zh) * | 2021-11-15 | 2023-05-19 | 北京字跳网络技术有限公司 | 视频处理方法、装置、电子设备及可读存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11232143A (ja) * | 1998-02-18 | 1999-08-27 | Oki Electric Ind Co Ltd | マルチスレッドの監視方法 |
US20120096474A1 (en) * | 2010-10-15 | 2012-04-19 | Via Technologies, Inc. | Systems and Methods for Performing Multi-Program General Purpose Shader Kickoff |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
US20160085583A1 (en) * | 2014-09-24 | 2016-03-24 | Facebook, Inc. | Multi-Threaded Processing of User Interfaces for an Application |
CN106354512A (zh) * | 2016-09-08 | 2017-01-25 | 广州华多网络科技有限公司 | 用户界面渲染方法及装置 |
CN106910232A (zh) * | 2017-02-24 | 2017-06-30 | 青岛海信电器股份有限公司 | 画线擦除方法及装置 |
CN107729094A (zh) * | 2017-08-29 | 2018-02-23 | 口碑(上海)信息技术有限公司 | 一种用户界面渲染的方法及装置 |
CN109324724A (zh) * | 2018-08-20 | 2019-02-12 | 广州视源电子科技股份有限公司 | 电子白板的擦拭方法、装置、设备和存储介质 |
CN109491655A (zh) * | 2018-10-08 | 2019-03-19 | 北京小米移动软件有限公司 | 一种输入事件处理方法及装置 |
CN109499059A (zh) * | 2018-11-15 | 2019-03-22 | 腾讯科技(深圳)有限公司 | 对象的渲染方法和装置、存储介质、电子装置 |
CN109960543A (zh) * | 2019-03-18 | 2019-07-02 | 广州视源电子科技股份有限公司 | 书写操作的处理方法和装置 |
CN110209444A (zh) * | 2019-03-20 | 2019-09-06 | 华为技术有限公司 | 一种图形渲染方法和电子设备 |
CN110580274A (zh) * | 2019-09-12 | 2019-12-17 | 西安瑞特森信息科技有限公司 | 一种gis数据渲染方法 |
US20200005500A1 (en) * | 2018-07-02 | 2020-01-02 | Apple Inc. | Electronic drawing with handwriting recognition |
CN110659094A (zh) * | 2019-09-11 | 2020-01-07 | 北京达佳互联信息技术有限公司 | 一种对象渲染及其控制方法、装置、设备及介质 |
-
2020
- 2020-03-31 CN CN202010245289.9A patent/CN111459591B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11232143A (ja) * | 1998-02-18 | 1999-08-27 | Oki Electric Ind Co Ltd | マルチスレッドの監視方法 |
US20120096474A1 (en) * | 2010-10-15 | 2012-04-19 | Via Technologies, Inc. | Systems and Methods for Performing Multi-Program General Purpose Shader Kickoff |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
US20160085583A1 (en) * | 2014-09-24 | 2016-03-24 | Facebook, Inc. | Multi-Threaded Processing of User Interfaces for an Application |
CN106354512A (zh) * | 2016-09-08 | 2017-01-25 | 广州华多网络科技有限公司 | 用户界面渲染方法及装置 |
CN106910232A (zh) * | 2017-02-24 | 2017-06-30 | 青岛海信电器股份有限公司 | 画线擦除方法及装置 |
CN107729094A (zh) * | 2017-08-29 | 2018-02-23 | 口碑(上海)信息技术有限公司 | 一种用户界面渲染的方法及装置 |
US20200005500A1 (en) * | 2018-07-02 | 2020-01-02 | Apple Inc. | Electronic drawing with handwriting recognition |
CN109324724A (zh) * | 2018-08-20 | 2019-02-12 | 广州视源电子科技股份有限公司 | 电子白板的擦拭方法、装置、设备和存储介质 |
CN109491655A (zh) * | 2018-10-08 | 2019-03-19 | 北京小米移动软件有限公司 | 一种输入事件处理方法及装置 |
CN109499059A (zh) * | 2018-11-15 | 2019-03-22 | 腾讯科技(深圳)有限公司 | 对象的渲染方法和装置、存储介质、电子装置 |
CN109960543A (zh) * | 2019-03-18 | 2019-07-02 | 广州视源电子科技股份有限公司 | 书写操作的处理方法和装置 |
CN110209444A (zh) * | 2019-03-20 | 2019-09-06 | 华为技术有限公司 | 一种图形渲染方法和电子设备 |
CN110659094A (zh) * | 2019-09-11 | 2020-01-07 | 北京达佳互联信息技术有限公司 | 一种对象渲染及其控制方法、装置、设备及介质 |
CN110580274A (zh) * | 2019-09-12 | 2019-12-17 | 西安瑞特森信息科技有限公司 | 一种gis数据渲染方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113648655A (zh) * | 2021-07-21 | 2021-11-16 | 网易(杭州)网络有限公司 | 虚拟模型的渲染方法、装置、存储介质和电子设备 |
WO2023083064A1 (zh) * | 2021-11-15 | 2023-05-19 | 北京字跳网络技术有限公司 | 视频处理方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111459591B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110971930B (zh) | 虚拟形象直播的方法、装置、终端及存储介质 | |
CN107885533B (zh) | 管理组件代码的方法及装置 | |
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110022489B (zh) | 视频播放方法、装置及存储介质 | |
CN110288689B (zh) | 对电子地图进行渲染的方法和装置 | |
CN110321126B (zh) | 生成页面代码的方法和装置 | |
CN110784370B (zh) | 设备测试的方法、装置、电子设备及介质 | |
CN111752817A (zh) | 页面加载时长的确定方法、装置、设备及存储介质 | |
CN111897465B (zh) | 弹窗显示方法、装置、设备及存储介质 | |
CN111459591B (zh) | 待渲染对象处理方法、装置和终端 | |
CN111427629B (zh) | 应用启动方法、装置、车机设备及存储介质 | |
CN110677713B (zh) | 视频图像处理方法及装置、存储介质 | |
CN109783176B (zh) | 切换页面的方法和装置 | |
CN113936699A (zh) | 音频处理方法、装置、设备及存储介质 | |
CN108664300B (zh) | 一种画中画模式下的应用界面显示方法及装置 | |
CN112966130B (zh) | 多媒体资源展示方法、装置、终端及存储介质 | |
CN110769120A (zh) | 进行消息提醒的方法、装置、设备及存储介质 | |
CN111797017A (zh) | 存储日志的方法、装置、测试设备及存储介质 | |
CN112181915A (zh) | 执行业务的方法、装置、终端和存储介质 | |
CN115344537A (zh) | 存储空间分配的方法、装置、文件系统和存储介质 | |
CN112015612B (zh) | 一种获取卡顿信息的方法及装置 | |
CN113843814A (zh) | 机械臂设备的控制系统、方法、装置和存储介质 | |
CN110851435B (zh) | 一种存储数据的方法及装置 | |
CN111708581A (zh) | 应用启动方法、装置、设备及计算机存储介质 | |
CN112202966B (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 |