本發(fā)明涉及計(jì)算機(jī),具體涉及一種顯示方法、電子設(shè)備和計(jì)算機(jī)可讀介質(zhì)。
背景技術(shù):
1、在生成應(yīng)用程序的應(yīng)用界面的場(chǎng)景中,由該應(yīng)用程序?qū)?yīng)的渲染線程先向分配服務(wù)(allocator?service)申請(qǐng)用于繪制和渲染應(yīng)用界面內(nèi)容的緩沖區(qū)(buffer)。然后,渲染線程將應(yīng)用界面繪制和渲染到所申請(qǐng)到的緩沖區(qū)中。其次,電子設(shè)備中用于合成顯示界面的進(jìn)程(例如,surfaceflinger)可以對(duì)不同應(yīng)用程序?qū)?yīng)緩沖區(qū)中的應(yīng)用界面進(jìn)行合成,得到完整的顯示界面。
2、在一些場(chǎng)景中,例如在應(yīng)用程序在前后臺(tái)切換的情景、應(yīng)用界面的窗口尺寸和/或需要顯示的數(shù)據(jù)量發(fā)生變化的場(chǎng)景中,應(yīng)用程序的渲染線程需要向分配服務(wù)重新申請(qǐng)用于繪制和渲染界面內(nèi)容的緩沖區(qū)。如果電子設(shè)備的多個(gè)應(yīng)用程序都向分配服務(wù)申請(qǐng)緩沖區(qū),分配服務(wù)會(huì)串行為各個(gè)應(yīng)用程序的應(yīng)用界面分配緩沖區(qū)。即在為一個(gè)應(yīng)用界面分配好緩沖區(qū)后,再為下一個(gè)應(yīng)用程序分配緩沖區(qū)。如此,會(huì)導(dǎo)致該多個(gè)應(yīng)用程序中申請(qǐng)順序靠后的應(yīng)用程序等待申請(qǐng)緩沖區(qū)的時(shí)間較長(zhǎng),從而導(dǎo)致該應(yīng)用程序繪制和渲染界面的時(shí)間增加,進(jìn)而導(dǎo)致其應(yīng)用界面的顯示過(guò)程出現(xiàn)卡頓或掉幀。
3、例如,參見(jiàn)圖1,手機(jī)10a的屏幕顯示了即時(shí)通訊應(yīng)用的聊天界面100a。在用戶對(duì)手機(jī)10a的屏幕進(jìn)行上滑操作的過(guò)程中,手機(jī)10a逐漸由顯示聊天界面100a切換為顯示多任務(wù)界面100b??梢岳斫?,該界面切換過(guò)程可由桌面應(yīng)用進(jìn)程顯示。
4、在用戶上滑屏幕的過(guò)程中,即時(shí)通訊應(yīng)用的聊天界面100a的窗口尺寸發(fā)生了變化,并且桌面應(yīng)用由后臺(tái)運(yùn)行切換為了前臺(tái)運(yùn)行。因此,即時(shí)通訊應(yīng)用及桌面應(yīng)用都會(huì)向手機(jī)100的分配服務(wù)重新申請(qǐng)緩沖區(qū)。如果分配服務(wù)先為桌面應(yīng)用分配了緩沖區(qū),則可能導(dǎo)致即時(shí)通訊應(yīng)用的聊天界面100a繪制延遲,從而導(dǎo)致聊天界面100a的窗口逐漸變小的過(guò)程中出現(xiàn)卡頓現(xiàn)象;如果分配服務(wù)先為即時(shí)通訊應(yīng)用分配了緩沖區(qū),則可能導(dǎo)致多任務(wù)界面100b的繪制延遲,從而導(dǎo)致桌面應(yīng)用在由聊天界面100a切換為多任務(wù)界面100b的過(guò)程中出現(xiàn)卡頓現(xiàn)象。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種顯示方法、電子設(shè)備和計(jì)算機(jī)可讀介質(zhì),可避免電子設(shè)備同時(shí)顯示多個(gè)應(yīng)用界面過(guò)程中出現(xiàn)卡頓、掉幀等現(xiàn)象。
2、第一方面,本技術(shù)提供了一種顯示方法,應(yīng)用于電子設(shè)備,該顯示方法包括:檢測(cè)到顯示第一應(yīng)用界面的第一指令;為第一應(yīng)用界面的第一渲染線程分配第一緩沖區(qū),并基于第一緩沖區(qū)渲染第一應(yīng)用界面;檢測(cè)到將顯示第一應(yīng)用界面切換為顯示m個(gè)第二應(yīng)用界面的切換指令,其中,m大于或者等于2;為m個(gè)第二應(yīng)用界面對(duì)應(yīng)的n個(gè)第二渲染線程并行分配多個(gè)第二緩沖區(qū),并基于多個(gè)第二緩沖區(qū),分別渲染多個(gè)第二應(yīng)用界面,其中,m小于或者等于n。
3、在此,第一應(yīng)用界面可以是第一應(yīng)用程序的顯示界面,顯示第一應(yīng)用界面的第一指令可以是任何能夠使第一應(yīng)用程序顯示第一應(yīng)用界面的系統(tǒng)指令和/或用戶操作,在此,不對(duì)第一指令做限制性說(shuō)明。示例性地,第一渲染線程可以是第一應(yīng)用程序的渲染線程,第一渲染線程可以用于渲染繪制第一應(yīng)用界面。m個(gè)第二應(yīng)用界面可以是一個(gè)或多個(gè)應(yīng)用程序的應(yīng)用界面,可以理解,不同的第二應(yīng)用界面可以屬于同一個(gè)應(yīng)用程序,也可以屬于不同的應(yīng)用界面。在此,不對(duì)第二應(yīng)用界面所屬的應(yīng)用程序做限制性說(shuō)明。
4、在此,本技術(shù)不對(duì)m個(gè)第二應(yīng)用界面和n個(gè)第二渲染線程之間的對(duì)應(yīng)關(guān)系做限制性說(shuō)明,例如,m可以等于n。具體地,m個(gè)第二應(yīng)用界面可以各自對(duì)應(yīng)一個(gè)第二渲染線程,各個(gè)第二渲染線程可以用于渲染一個(gè)第二應(yīng)用界面。再例如,m可以大于n,具體地,一個(gè)第二渲染線程可以用于渲染多個(gè)第二應(yīng)用界面。再例如,m可以小于n,該具體示例可參見(jiàn)下文的具體描述,在此不做贅述。
5、此外,第一緩沖區(qū)及第二緩沖區(qū)可以是一個(gè)緩沖區(qū),也可以是基于緩沖區(qū)輪轉(zhuǎn)機(jī)制(buffer?rotation?mechanism)用于實(shí)現(xiàn)緩沖區(qū)輪轉(zhuǎn)的多個(gè)緩沖區(qū)。例如,m個(gè)第二應(yīng)用界面中的一個(gè)或多個(gè)對(duì)應(yīng)的第二緩沖區(qū)可為多個(gè)緩沖區(qū)。在此,不對(duì)第一應(yīng)用界面對(duì)應(yīng)的第一緩沖區(qū)個(gè)數(shù)、以及各個(gè)第二應(yīng)用界面對(duì)應(yīng)的各個(gè)第二緩沖區(qū)個(gè)數(shù)做限制性說(shuō)明。若第一緩沖區(qū)為多個(gè)緩沖區(qū),普遍而言,第一渲染線程可以串行申請(qǐng)第一緩沖區(qū)包括的多個(gè)緩沖區(qū)。相應(yīng)地,若第二應(yīng)用界面對(duì)應(yīng)的第二緩存區(qū)為多個(gè)緩沖區(qū),普遍而言,第二渲染線程可以串行申請(qǐng)第二緩沖區(qū)包括的多個(gè)緩沖區(qū)。
6、可以理解,一個(gè)渲染線程串行申請(qǐng)多個(gè)緩沖區(qū)不影響電子設(shè)備為多個(gè)渲染線程并行分配緩沖區(qū)。在此,具體可參見(jiàn)下文對(duì)圖2b的說(shuō)明中,分配服務(wù)基于第一分配緩沖區(qū)線程12以及第二分配緩沖區(qū)線程22并行分配緩沖區(qū)101以及緩沖區(qū)200的具體內(nèi)容,在此不做贅述。
7、在一種示例方式中,m個(gè)第二應(yīng)用界面可以是下文中的第一應(yīng)用程序、第二應(yīng)用程序及第三應(yīng)用程序需要顯示的應(yīng)用界面。對(duì)應(yīng)地,n個(gè)第二渲染線程可以是下文中第一應(yīng)用程序的渲染線程11、第二應(yīng)用程序的渲染線程21及第三應(yīng)用程序的渲染線程31。對(duì)應(yīng)地,多個(gè)第二緩沖區(qū)可以是下文中的緩沖區(qū)100、緩沖區(qū)200及緩沖區(qū)300。
8、基于上述內(nèi)容,由于電子設(shè)備為n個(gè)第二渲染線程并行分配用于顯示m個(gè)第二應(yīng)用界面的緩沖區(qū),因此,各個(gè)第二渲染線程無(wú)需在申請(qǐng)緩沖區(qū)后,串行等待電子設(shè)備響應(yīng)其發(fā)送的申請(qǐng)緩沖區(qū)請(qǐng)求。大大縮短了第二渲染線程發(fā)送申請(qǐng)緩沖區(qū)請(qǐng)求與提取到緩沖區(qū)之間的時(shí)延,縮短了其基于緩沖區(qū)繪制顯示內(nèi)容之前所需的等待時(shí)間??梢岳斫猓鄠€(gè)渲染線程在發(fā)送申請(qǐng)緩沖區(qū)請(qǐng)求后,由于電子設(shè)備并行響應(yīng)各個(gè)請(qǐng)求,使得各個(gè)渲染線程均可以在較短的時(shí)間內(nèi)就提取到緩沖區(qū)開(kāi)始繪制工作,因此,有效避免了同時(shí)顯示多個(gè)應(yīng)用界面過(guò)程中,因等待分配緩沖區(qū)時(shí)延過(guò)長(zhǎng)導(dǎo)致的應(yīng)用界面顯示卡頓、掉幀等問(wèn)題。
9、在上述第一方面的一種可能的實(shí)現(xiàn)中,m為2,第一應(yīng)用界面u1和m個(gè)第二應(yīng)用界面中的第二應(yīng)用界面u2為第一應(yīng)用的界面;并且,m個(gè)第二應(yīng)用界面還包括第二應(yīng)用的第二應(yīng)用界面u3。
10、在此,電子設(shè)備可以基于切換指令在顯示第一應(yīng)用的應(yīng)用界面的基礎(chǔ)上,增加顯示第二應(yīng)用的應(yīng)用界面,以同時(shí)顯示兩個(gè)應(yīng)用界面。在此,接收切換指令前顯示的第一應(yīng)用界面u1可以是切換后顯示的第二應(yīng)用界面u2,切換后顯示的第二應(yīng)用界面u2也可以與切換前顯示的第一應(yīng)用界面u1不同。在此,不對(duì)第一應(yīng)用在切換前后顯示的應(yīng)用界面做限制性說(shuō)明。切換后顯示的第二應(yīng)用界面u2的第二渲染線程以及第二應(yīng)用界面u3的第二渲染線程均可能申請(qǐng)緩沖區(qū),進(jìn)而,電子設(shè)備可并行分配顯示第二應(yīng)用界面u2所需的緩沖區(qū)以及顯示第二應(yīng)用界面u3所需的緩沖區(qū)。以縮短顯示第二應(yīng)用界面u2及第二應(yīng)用界面u3所需的時(shí)間,避免應(yīng)用界面顯示卡頓、掉幀等問(wèn)題。
11、具體地,切換后顯示的第二應(yīng)用界面u2需要重新申請(qǐng)緩沖區(qū)的原因可以是,切換前顯示的第一應(yīng)用界面u1與切換后顯示的第二應(yīng)用界面u2的窗口大小明顯不同,和/或,切換前顯示的第一應(yīng)用界面u1與切換后顯示的第二應(yīng)用界面u2中需要顯示的數(shù)據(jù)量明顯不同。切換后顯示的第二應(yīng)用界面u3需要重新申請(qǐng)緩沖區(qū)的原因可以是,第二應(yīng)用首次運(yùn)行,或者,第二應(yīng)用由后臺(tái)運(yùn)行切換為前臺(tái)運(yùn)行。可以理解,本技術(shù)不對(duì)第二應(yīng)用界面u2及第二應(yīng)用界面u3重新申請(qǐng)緩沖區(qū)的具體原因做限制性說(shuō)明。
12、在上述第一方面的一種可能的實(shí)現(xiàn)中,切換指令用于指令下列中的任一項(xiàng):第二應(yīng)用界面u2和第二應(yīng)用界面u3分屏顯示;全屏顯示第二應(yīng)用界面u2,并在懸浮窗中顯示第二應(yīng)用界面u3;全屏顯示第二應(yīng)用界面u3,并在懸浮窗中顯示第二應(yīng)用界面u2。
13、在此,電子設(shè)備同時(shí)顯示第二應(yīng)用界面u2和第二應(yīng)用界面u3的方式可以是分屏顯示、基于懸浮窗在一個(gè)第二應(yīng)用界面上疊加顯示另一個(gè)第二應(yīng)用界面等,本技術(shù)不對(duì)第二應(yīng)用界面u2和第二應(yīng)用界面u3的具體顯示方式做限制性說(shuō)明。
14、在上述第一方面的一種可能的實(shí)現(xiàn)中,切換指令用于指令在桌面顯示多任務(wù)界面,多任務(wù)界面包括m個(gè)第二應(yīng)用界面,m個(gè)第二應(yīng)用界面為m個(gè)第二應(yīng)用的應(yīng)用界面,其中,m小于n,并且,n個(gè)第二渲染線程包括對(duì)應(yīng)m個(gè)第二應(yīng)用的第二應(yīng)用界面的m個(gè)第二渲染線程、以及對(duì)應(yīng)桌面應(yīng)用的第二渲染線程。
15、在此,多任務(wù)界面可以用于顯示全部后臺(tái)運(yùn)行的第二應(yīng)用的第二應(yīng)用界面。多任務(wù)界面可以是電子設(shè)備的桌面應(yīng)用的應(yīng)用界面。示例性地,電子設(shè)備后臺(tái)運(yùn)行的全部第二應(yīng)用可以是m個(gè),對(duì)應(yīng)地,多任務(wù)界面包括的第二應(yīng)用界面也可以是m個(gè)。因此,可以理解,為顯示多任務(wù)界面,需要m個(gè)后臺(tái)運(yùn)行的應(yīng)用程序的m個(gè)第二渲染線程渲染各自的第二應(yīng)用界面,并且,至少需要桌面應(yīng)用的一個(gè)第二渲染線程渲染多任務(wù)界面。因此,可以理解,在顯示多任務(wù)界面時(shí),第二應(yīng)用界面的個(gè)數(shù)m小于第二渲染線程的個(gè)數(shù)n。
16、在上述第一方面的一種可能的實(shí)現(xiàn)中,對(duì)應(yīng)桌面應(yīng)用的第二渲染線程,包括:多任務(wù)界面對(duì)應(yīng)的第二渲染線程;或者,多任務(wù)界面對(duì)應(yīng)的第二渲染線程和負(fù)一屏界面對(duì)應(yīng)的第二渲染線程。
17、在此,在一種示例方式中,由于桌面應(yīng)用與負(fù)一屏(negative?one?screen)應(yīng)用的關(guān)聯(lián)程度較大,例如,用戶在使用桌面應(yīng)用顯示多任務(wù)界面或者桌面界面時(shí),基于滑動(dòng)界面等用戶操作切換至負(fù)一屏界面的可能性較大。因此,大多數(shù)電子設(shè)備廠商均會(huì)設(shè)置在桌面應(yīng)用的渲染線程重新申請(qǐng)緩沖區(qū)的情況下,指令負(fù)一屏應(yīng)用的渲染線程也要申請(qǐng)緩沖區(qū)以準(zhǔn)備顯示負(fù)一屏界面的策略。因此,在該策略下,桌面應(yīng)用的第二渲染線程對(duì)應(yīng)桌面應(yīng)用的第二渲染線程可以包括多任務(wù)界面對(duì)應(yīng)的1個(gè)桌面應(yīng)用的第二渲染線程以及負(fù)一屏界面對(duì)應(yīng)的1個(gè)負(fù)一屏應(yīng)用的第二渲染線程。
18、在此,負(fù)一屏界面可以是包含了一系列定制工具(widgets)、新聞?wù)?、快捷操作、搜索框或其他服?wù)內(nèi)容的系統(tǒng)應(yīng)用界面。用戶可以通過(guò)在桌面界面的滑動(dòng)操作訪問(wèn)負(fù)一屏。
19、在另一種示例方式中,電子設(shè)備在顯示多任務(wù)界面時(shí),可能同時(shí)顯示桌面界面,具體可以參考圖1及圖5所示的多任務(wù)界面示意圖,多任務(wù)界面可疊加顯示在桌面界面上?;诖朔N顯示方式,多任務(wù)界面對(duì)應(yīng)的第二渲染線程可以僅為1個(gè),并基于這1個(gè)第二渲染線程同時(shí)渲染疊加顯示的多任務(wù)界面和桌面界面?;蛘撸嗳蝿?wù)界面可對(duì)應(yīng)第二渲染線程可以為2個(gè),其中,一個(gè)第二渲染線程可用于渲染多任務(wù)界面,另一個(gè)第二渲染線程可用于渲染桌面界面。
20、在上述第一方面的一種可能的實(shí)現(xiàn)中,檢測(cè)到將顯示第一應(yīng)用界面切換為顯示m個(gè)第二應(yīng)用界面的切換指令,包括:檢測(cè)到用戶在電子設(shè)備屏幕底部的上滑操作,檢測(cè)到切換指令。
21、在此,一種顯示多任務(wù)界面的切換指令可以是用戶在電子設(shè)備屏幕底部的上滑操作。
22、在上述第一方面的一種可能的實(shí)現(xiàn)中,為m個(gè)第二應(yīng)用界面對(duì)應(yīng)的n個(gè)第二渲染線程并行分配多個(gè)第二緩沖區(qū),包括:接收到n個(gè)第二渲染線程發(fā)送的申請(qǐng)緩沖區(qū)的請(qǐng)求,為n個(gè)第二渲染線程分別創(chuàng)建對(duì)應(yīng)的分配線程;基于n個(gè)分配線程為n個(gè)第二渲染線程并行分配緩沖區(qū)。
23、在一種示例方式中,m個(gè)第二應(yīng)用界面可以是下文中的第一應(yīng)用程序、第二應(yīng)用程序及第三應(yīng)用程序需要顯示的應(yīng)用界面。對(duì)應(yīng)地,n個(gè)第二渲染線程可以是下文中第一應(yīng)用程序的渲染線程11、第二應(yīng)用程序的渲染線程21及第三應(yīng)用程序的渲染線程31。對(duì)應(yīng)地,多個(gè)第二緩沖區(qū)可以是下文中的緩沖區(qū)100、緩沖區(qū)200及緩沖區(qū)300。分配線程可以是下文中的分配緩沖區(qū)線程,n個(gè)分配線程可以是下文中的第一分配緩沖區(qū)線程12、第二分配緩沖區(qū)線程22、第三分配緩沖區(qū)線程32。
24、因此,基于本技術(shù)提供的顯示方法,可以為第一應(yīng)用程序的渲染線程11、第二應(yīng)用程序的渲染線程21及第三應(yīng)用程序的渲染線程31并行分配緩沖區(qū)100、緩沖區(qū)200及緩沖區(qū)300。以避免電子設(shè)備同時(shí)顯示第一應(yīng)用程序、第二應(yīng)用程序及第三應(yīng)用程序的應(yīng)用界面時(shí),出現(xiàn)卡頓、跳幀等問(wèn)題。
25、在上述第一方面的一種可能的實(shí)現(xiàn)中,電子設(shè)備包括第一服務(wù),第一服務(wù)用于分配緩沖區(qū),第一服務(wù)包括第一接口,并且,基于n個(gè)分配線程為n個(gè)第二渲染線程并行分配緩沖區(qū),包括:n個(gè)分配線程中的第一分配線程調(diào)用第一服務(wù),在第一分配時(shí)段為第一分配線程對(duì)應(yīng)的第二渲染線程分配緩沖區(qū);n個(gè)分配線程中的第二分配線程調(diào)用第一服務(wù),在第二分配時(shí)段為第二分配線程對(duì)應(yīng)的第二渲染線程分配緩沖區(qū);其中,第一分配時(shí)段與第二分配時(shí)段重合或者部分重合。
26、在此,第一服務(wù)可以為下文中的分配服務(wù),例如androidtm系統(tǒng)中的vendor.qti.hard?ware.display.allocator-service。第一服務(wù)可響應(yīng)于渲染線程發(fā)送的申請(qǐng)緩沖區(qū)請(qǐng)求為渲染線程創(chuàng)建對(duì)應(yīng)的分配緩沖區(qū)線程,并基于分配緩沖區(qū)線程對(duì)第一接口的調(diào)用為該分配緩沖區(qū)線程對(duì)應(yīng)的渲染線程分配緩沖區(qū)。
27、例如,第一服務(wù)可響應(yīng)于n個(gè)第二渲染線程發(fā)送的申請(qǐng)緩沖區(qū)請(qǐng)求為n個(gè)第二渲染線程創(chuàng)建對(duì)應(yīng)的n個(gè)分配線程,并基于n個(gè)分配線程對(duì)第一接口的調(diào)用為n個(gè)分配線程對(duì)應(yīng)的n個(gè)第二渲染線程分配緩沖區(qū)。第一接口可以是下文中的分配服務(wù)中用于分配緩沖區(qū)的接口,例如,allocbuffer接口。第一分配線程可以是n個(gè)分配線程中的任意一個(gè)分配線程,第二分配線程可以是n個(gè)分配線程中的不同于第一分配線程的任意一個(gè)分配線程。
28、第一分配線程分配緩沖區(qū)的第一分配時(shí)段可以包括:從開(kāi)始分配緩沖區(qū)的時(shí)刻至完成分配緩沖區(qū)的時(shí)刻之間的時(shí)間段。以第一分配線程為下文圖2a中的第一分配緩沖區(qū)線程12為例,第一分配時(shí)段可以是分配緩沖區(qū)100的t05時(shí)刻至t06刻。
29、可以理解,基于n個(gè)分配線程為n個(gè)第二渲染線程并行分配緩沖區(qū),至少是第一分配線程的第一分配時(shí)段與第二分配線程的第二分配時(shí)段重合或者部分重合,可以理解,此時(shí),分配服務(wù)可以在同時(shí)分配兩個(gè)緩沖區(qū)。至多可以是n個(gè)分配線程的n個(gè)分配時(shí)段均重合或者部分重合,可以理解,此時(shí),分配服務(wù)可以在同時(shí)分配n個(gè)緩沖區(qū)。在此,不對(duì)并行分配的緩沖區(qū)個(gè)數(shù)做限制性說(shuō)明。
30、在上述第一方面的一種可能的實(shí)現(xiàn)中,第一分配時(shí)段與第二分配時(shí)段重合或者部分重合,包括下列中的任一項(xiàng):第一分配時(shí)段的起始時(shí)刻與第二分配時(shí)段的起始時(shí)刻相同和/或第一分配時(shí)段的結(jié)束時(shí)刻與第二分配時(shí)段的結(jié)束時(shí)刻相同;第一分配時(shí)段的起始時(shí)刻處于第二分配時(shí)段的起始時(shí)刻與結(jié)束時(shí)刻之間;第一分配時(shí)段的結(jié)束時(shí)刻位于第二分配時(shí)段的起始時(shí)刻與結(jié)束時(shí)刻之間。
31、在此,不對(duì)并行分配緩沖區(qū)的具體情況做限制性說(shuō)明,只要n個(gè)分配線程中的至少兩個(gè)對(duì)應(yīng)的分配時(shí)段存在時(shí)序上的重合,包括時(shí)間點(diǎn)的重合,均可認(rèn)為分配服務(wù)在并行分配緩沖區(qū)。
32、在上述第一方面的一種可能的實(shí)現(xiàn)中,第一服務(wù)還包括第一鎖,其中,第一鎖的作用域不包括第一接口,并且,第一鎖用于避免第一服務(wù)中的第一變量被并發(fā)讀寫(xiě)。
33、在此,第一鎖可以vendor.qti.hardware.display.allocator-service中的buffer_lock。第一變量可以是dma_legacy_dev_fd變量。
34、以第一服務(wù)為vendor.qti.hardware.display.allocator-service、第一接口為vendor.qti.hardware.display.allocator-service中的allocbuffer接口、第一鎖為vendor.qti.hardware.display.allocator-service中的buffer_lock為例,由于allocbuffer接口位于buffer_lock的作用域,導(dǎo)致allocbuffer接口只能被分配緩沖區(qū)線程串行的調(diào)用,即,只能在一個(gè)分配緩沖區(qū)線程完成分配緩沖區(qū)后,另一個(gè)分配緩沖區(qū)線程才能調(diào)用all?ocbuffer接口。因此,可以通過(guò)將allocbuffer接口設(shè)置在buffer_lock的作用域之外的方式,使得allocbuffer接口可以被多個(gè)分配緩沖區(qū)線程并行調(diào)用。
35、可以理解,通通過(guò)上述方式可達(dá)到第一服務(wù)能夠并行分配多個(gè)緩沖區(qū)的目的,進(jìn)而,可實(shí)現(xiàn)避免顯示多個(gè)應(yīng)用界面時(shí)出現(xiàn)卡頓掉幀的現(xiàn)象的效果。
36、在上述第一方面的一種可能的實(shí)現(xiàn)中,第一變量位于第一接口中,其中,第一變量為局部變量。
37、在此,延續(xù)上例,由于接口中的dma_legacy_dev_fd變量禁止被并發(fā)讀寫(xiě),因此,將allocbuffer接口設(shè)置在buffer_lock的作用域以外之后,為防止dma_legacy_dev_fd變量被并發(fā)讀寫(xiě),可以將該dma_legacy_dev_fd變量設(shè)置為局部變量類型??梢岳斫猓瑢?duì)于局部變量類型的dma_legacy_dev_fd變量,每個(gè)調(diào)用allocbuffer接口的線程和/或模塊均具有對(duì)應(yīng)的dma_legacy_dev_fd變量值,各個(gè)線程和/或模塊對(duì)該變量值的修改均不會(huì)相互影響。因此,可有效避免位于buffer_lock的作用域以外的dma_legacy_dev_fd變量被并發(fā)讀寫(xiě)。通過(guò)此方式,防止因dma_legacy_dev_fd變量被并發(fā)讀寫(xiě)而造成的分配緩沖區(qū)異常,進(jìn)而,確保m個(gè)第二應(yīng)用界面可正常顯示。
38、在上述第一方面的一種可能的實(shí)現(xiàn)中,第一接口中包括第一全局集合,其中,第一全局集合包括局部變量類型的第一變量的所有變量值;并且,析構(gòu)調(diào)用第一接口的第一分配緩沖區(qū)線程時(shí),基于第一全局結(jié)合清空第一變量的所有變量值。
39、在此,延續(xù)上例,由于各個(gè)調(diào)用allocbuffer接口的線程和/或模塊在析構(gòu)(destruc?tion)時(shí),需要清空該dma_legacy_dev_fd變量值。例如,分配緩沖區(qū)線程在完成分配緩沖區(qū)后,需要將該dma_legacy_dev_fd變量值清空。因此,在將該dma_legacy_dev_fd變量設(shè)置為局部變量類型后,可以在allocbuffer接口中設(shè)置作用域?yàn)槿值募?,例如,可在allocbuffer接口中設(shè)置set集合,該集合用于保存所有的dma_legacy_dev_fd變量值。進(jìn)而,當(dāng)調(diào)用allocbuffer接口的線程和/或模塊在析構(gòu)時(shí),可以通過(guò)清空該集合的方式將dma_legacy_dev_fd變量值全局清空。通過(guò)此方式,可以防止因dma_legacy_dev_fd變量未在析構(gòu)時(shí)被全局清空而導(dǎo)致的分配緩沖區(qū)異常,進(jìn)而,確保m個(gè)第二應(yīng)用界面可正常顯示。
40、第二方面,本技術(shù)提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;一個(gè)或多個(gè)存儲(chǔ)器;一個(gè)或多個(gè)存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,當(dāng)一個(gè)或者多個(gè)程序被一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得電子設(shè)備執(zhí)行上述第一方面以及上述第一方面的各種可能的實(shí)現(xiàn)提供的顯示方法。
41、第三方面,本技術(shù)提供了一種計(jì)算機(jī)可讀介質(zhì),可讀介質(zhì)上存儲(chǔ)有指令,指令在計(jì)算機(jī)上執(zhí)行時(shí)使計(jì)算機(jī)執(zhí)行上述第一方面以及上述第一方面的各種可能的實(shí)現(xiàn)提供的顯示方法。
42、第四方面,本技術(shù)提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述第一方面以及上述第一方面的各種可能的實(shí)現(xiàn)提供的顯示方法。
43、上述第二方面至第四方面的有益效果,可以參考上述第一方面以及第一方面的各種可能的實(shí)現(xiàn)中的相關(guān)描述,在此不做贅述。