本申請涉及屏幕刷新技術(shù)領(lǐng)域,更具體地說,涉及一種屏幕刷新系統(tǒng)及方法。
背景技術(shù):
終端的屏幕對應(yīng)系統(tǒng)中一個幀緩沖區(qū)frame buffer,frame buffer為預(yù)先分配的一塊緩沖內(nèi)存,內(nèi)存中存放要顯示的像素內(nèi)容。底層一般會提供一個接口,將frame buffer中的內(nèi)容顯示到終端屏幕上。
終端屏幕上可以同時存在多個窗口,多個窗口的刷新、繪圖、上屏等操作由窗口管理系統(tǒng)統(tǒng)一管理。窗口管理系統(tǒng)對外提供統(tǒng)一的刷新接口,任何窗口都可以通過這個刷新接口通知窗口管理系統(tǒng)對指定區(qū)域(一般是窗口所占區(qū)域)進行刷新。對于窗口管理系統(tǒng)而言,區(qū)域均是矩形。窗口管理系統(tǒng)將一個周期內(nèi)所接收的各待刷新區(qū)域進行合并,求取包圍各刷新區(qū)域的最小矩形區(qū)域。進一步,確定窗口所占區(qū)域與該最小矩形區(qū)域存在交集的目標窗口。按照窗口層次由低至高的順序,依次向各目標窗口發(fā)送繪圖指令。各目標窗口在收到繪圖指令時對frame buffer中對應(yīng)區(qū)域進行內(nèi)容繪制。窗口管理系統(tǒng)在確定所有目標窗口均繪圖完畢之后,將frame buffer中的內(nèi)容上屏顯示。
本案發(fā)明人通過研究發(fā)現(xiàn),在某些情況下現(xiàn)有技術(shù)會存在多余繪圖的過程,參見圖1所示例子:屏幕10中共包含三個窗口,分別為窗口11、窗口12和窗口13。假設(shè)在一個周期內(nèi)窗口11和窗口13需要進行刷新,并向窗口管理系統(tǒng)發(fā)送了刷新請求,而窗口12并不需要進行刷新。按照現(xiàn)有技術(shù),窗口管理系統(tǒng)會對窗口11及窗口13求并集,得到區(qū)域14。進而向與該區(qū)域14存在交集的各窗口發(fā)送繪圖指令。由于窗口12與區(qū)域14存在交集,因此會收到繪圖指令,并對緩沖內(nèi)存中窗口12對應(yīng)區(qū)域進行重復(fù)繪圖。而顯然,窗口12顯示內(nèi)容并未產(chǎn)生變化,重復(fù)繪圖即浪費時間,也占用有限的繪圖資源。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┝艘环N屏幕刷新系統(tǒng)、方法及裝置,以解決現(xiàn)有技術(shù)存在多余繪圖過程,浪費時間且占用繪圖資源的問題。
為了實現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種屏幕刷新系統(tǒng),包括窗口管理系統(tǒng)及至少一窗口應(yīng)用,其中:
所述窗口管理系統(tǒng)用于,在每個時間周期開始時刻,在順序編號的窗口應(yīng)用組序列中確定當前編號對應(yīng)的目標窗口應(yīng)用組,所述窗口應(yīng)用組序列中包括若干窗口應(yīng)用組,每一窗口應(yīng)用組中包含窗口區(qū)域符合設(shè)定近鄰關(guān)系的若干窗口對應(yīng)的窗口應(yīng)用;向所述目標窗口應(yīng)用組中各目標窗口應(yīng)用發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;判斷所述目標窗口應(yīng)用組是否為所述窗口應(yīng)用組序列中最后一個窗口應(yīng)用組,若是,將所述當前編號更改為所述窗口應(yīng)用組序列中首個窗口應(yīng)用組的編號,若否,將所述當前編號更改為所述窗口應(yīng)用組序列中與所述目標窗口應(yīng)用組近鄰的后一窗口應(yīng)用組的編號;
所述目標窗口應(yīng)用用于,在所述時間片的長度范圍內(nèi),持續(xù)檢測是否需要進行屏幕刷新,若確定需要進行屏幕刷新,則與所述窗口管理系統(tǒng)交互,實現(xiàn)對屏幕的刷新。
優(yōu)選地,所述窗口管理系統(tǒng)還用于,對各窗口應(yīng)用進行分組,將窗口區(qū)域符合設(shè)定近鄰關(guān)系的窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,該過程包括:
步驟S1、將每一窗口初始化為一窗口組,得到窗口組序列;
步驟S2、在所述窗口組序列中取一窗口組,計算取出的窗口組與窗口組序列中其它各窗口組的密度差值,若取出的窗口組與目標窗口組的密度差值小于設(shè)定閾值,則將取出的窗口組中各窗口合并入所述目標窗口組;
重復(fù)步驟S2,直至所述窗口組序列中任意兩個窗口組均不能合并為止,將所述窗口組序列中每一窗口組中的各窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,為各窗口應(yīng)用組順序編號。
優(yōu)選地,所述步驟S2中計算取出的窗口組與目標窗口組的密度差值的過程,包括:
計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的面積和值,其中組區(qū)域為對應(yīng)窗口組中各窗口的窗口區(qū)域合并后的合并區(qū)域,該合并區(qū)域為包圍各窗口的窗口區(qū)域的最小區(qū)域;
計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的合并區(qū)域的面積值,作為目標面積值,該合并區(qū)域為包圍取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的最小區(qū)域;
計算所述面積和值與所述目標面積值的比值,該比值與單位密度1的差值作為取出的窗口組與目標窗口組的密度差值。
優(yōu)選地,所述目標窗口應(yīng)用與所述窗口管理系統(tǒng)交互,實現(xiàn)對屏幕的刷新的過程,包括:
所述目標窗口應(yīng)用向所述窗口管理系統(tǒng)發(fā)送刷新指令,刷新指令中包含刷新區(qū)域;
所述窗口管理系統(tǒng)用于,獲取當前周期內(nèi)接收的各刷新指令所包含的刷新區(qū)域,對各刷新區(qū)域進行合并,得到合并刷新區(qū)域;根據(jù)終端屏幕上的各窗口區(qū)域,確定窗口區(qū)域與所述合并刷新區(qū)域存在交集的待刷新窗口;按照窗口層次由低至高順序,向確定的各所述待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送繪圖指令;
所述待刷新窗口應(yīng)用還用于,在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖;
所述窗口管理系統(tǒng)還用于,在確定各待刷新窗口應(yīng)用均繪圖完畢后,對幀緩沖區(qū)frame buffer中的內(nèi)容進行上屏顯示。
優(yōu)選地,向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令包含,待刷新窗口的窗口區(qū)域與所述合并刷新區(qū)域的交集區(qū)域;
所述待刷新窗口應(yīng)用在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,具體包括:
在收到所述窗口管理系統(tǒng)發(fā)送的包含所述交集區(qū)域的繪圖指令時,調(diào)用所述窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
優(yōu)選地,向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令包含,所述合并刷新區(qū)域;
所述待刷新窗口應(yīng)用在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,具體包括:
在收到所述窗口管理系統(tǒng)發(fā)送的包括所述刷新區(qū)域的繪圖指令時,確定本窗口應(yīng)用對應(yīng)窗口的窗口區(qū)域與所述繪圖指令包含的所述合并刷新區(qū)域的交集區(qū)域;
調(diào)用所述窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
一種屏幕刷新方法,應(yīng)用于窗口管理系統(tǒng),該方法包括:
在當前時間周期開始時刻,在順序編號的窗口應(yīng)用組序列中確定當前編號對應(yīng)的目標窗口應(yīng)用組,所述窗口應(yīng)用組序列中包括若干窗口應(yīng)用組,每一窗口應(yīng)用組中包含窗口區(qū)域符合設(shè)定近鄰關(guān)系的若干窗口對應(yīng)的窗口應(yīng)用;
向所述目標窗口應(yīng)用組中各目標窗口應(yīng)用發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;
判斷所述目標窗口應(yīng)用組是否為所述窗口應(yīng)用組序列中最后一個窗口應(yīng)用組;若是,將所述當前編號更改為所述窗口應(yīng)用組序列中首個窗口應(yīng)用組的編號,若否,將所述當前編號更改為所述窗口應(yīng)用組序列中與所述目標窗口應(yīng)用組近鄰的后一窗口應(yīng)用組的編號;
獲取當前周期內(nèi)接收的各目標窗口應(yīng)用發(fā)送的刷新指令所包含的刷新區(qū)域,對各刷新區(qū)域進行合并,得到合并刷新區(qū)域;
根據(jù)終端屏幕上的各窗口區(qū)域,確定窗口區(qū)域與所述合并刷新區(qū)域存在交集的待刷新窗口;
按照窗口層次由低至高順序,向確定的各所述待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送繪圖指令,以觸發(fā)待刷新窗口應(yīng)用與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖,及對繪圖后的幀緩沖區(qū)frame buffer中的內(nèi)容進行上屏顯示。
優(yōu)選地,還包括:
對各窗口應(yīng)用進行分組,將窗口區(qū)域符合設(shè)定近鄰關(guān)系的窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,該過程包括:
步驟S1、將每一窗口初始化為一窗口組,得到窗口組序列;
步驟S2、在所述窗口組序列中取一窗口組,計算取出的窗口組與窗口組序列中其它各窗口組的密度差值,若取出的窗口組與目標窗口組的密度差值小于設(shè)定閾值,則將取出的窗口組中各窗口合并入所述目標窗口組;
重復(fù)步驟S2,直至所述窗口組序列中任意兩個窗口組均不能合并為止,將所述窗口組序列中每一窗口組中的各窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,為各窗口應(yīng)用組順序編號。
優(yōu)選地,所述步驟S2中計算取出的窗口組與目標窗口組的密度差值的過程,包括:
計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的面積和值,其中組區(qū)域為對應(yīng)窗口組中各窗口的窗口區(qū)域合并后的合并區(qū)域,該合并區(qū)域為包圍各窗口的窗口區(qū)域的最小區(qū)域;
計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的合并區(qū)域的面積值,作為目標面積值,該合并區(qū)域為包圍取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的最小區(qū)域;
計算所述面積和值與所述目標合并區(qū)域的比值,該比值與單位密度1的差值作為取出的窗口組與目標窗口組的密度差值。
優(yōu)選地,向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令中包含,待刷新窗口的窗口區(qū)域與所述合并刷新區(qū)域的交集區(qū)域;
所述窗口管理系統(tǒng)與待刷新窗口應(yīng)用交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,包括:
接收待刷新窗口應(yīng)用對繪圖接口的調(diào)用請求,所述調(diào)用請求包括所述交集區(qū)域;
調(diào)用所述繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
從上述的技術(shù)方案可以看出,本申請實施例提供的屏幕刷新系統(tǒng),包括窗口管理系統(tǒng)及至少一個窗口應(yīng)用,其中:所述窗口管理系統(tǒng)用于,在每個時間周期開始時刻,在順序編號的窗口應(yīng)用組序列中確定當前編號對應(yīng)的目標窗口應(yīng)用組,所述窗口應(yīng)用組序列中包括若干窗口應(yīng)用組,每一窗口應(yīng)用組中包含窗口區(qū)域符合設(shè)定近鄰關(guān)系的若干窗口對應(yīng)的窗口應(yīng)用;向所述目標窗口應(yīng)用組中各目標窗口應(yīng)用發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;判斷所述目標窗口應(yīng)用組是否為所述窗口應(yīng)用組序列中最后一個窗口應(yīng)用組,若是,將所述當前編號更改為所述窗口應(yīng)用組序列中首個窗口應(yīng)用組的編號,若否,將所述當前編號更改為所述窗口應(yīng)用組序列中與所述目標窗口應(yīng)用組近鄰的后一窗口應(yīng)用組的編號;所述目標窗口應(yīng)用用于,在所述時間片的長度范圍內(nèi),持續(xù)檢測是否需要進行屏幕刷新,若確定需要進行屏幕刷新,則與所述窗口管理系統(tǒng)交互,實現(xiàn)對屏幕的刷新。由此可見,本申請預(yù)先將多個窗口按照窗口區(qū)域近鄰關(guān)系劃分為多個組,每組內(nèi)的窗口對應(yīng)的窗口應(yīng)用構(gòu)成一窗口應(yīng)用組,多個窗口應(yīng)用組構(gòu)成序列且順序編號,窗口管理系統(tǒng)在每個時間周期內(nèi)僅從多個窗口應(yīng)用組中確定一個目標窗口應(yīng)用組,向目標窗口應(yīng)用組內(nèi)各目標窗口應(yīng)用發(fā)送時間片,而窗口應(yīng)用只有在收到時間片后,在時間片長度范圍內(nèi)檢測到需要刷新屏幕時才能夠與窗口管理系統(tǒng)交互,實現(xiàn)屏幕刷新。也即,在一個時間周期內(nèi),最多只有一個窗口應(yīng)用組內(nèi)的窗口應(yīng)用能夠?qū)崿F(xiàn)屏幕刷新,且同一窗口應(yīng)用組內(nèi)的各窗口應(yīng)用對應(yīng)的窗口區(qū)域比較靠近,即便區(qū)域合并也不會造成過多非必要繪圖,避免了現(xiàn)有技術(shù)同一時間周期內(nèi)各窗口應(yīng)用均可發(fā)起刷新指令,導(dǎo)致窗口管理系統(tǒng)對各刷新區(qū)域求并集后,將不需要繪圖的窗口也作為發(fā)送繪圖指令的對象,導(dǎo)致多余的繪圖操作。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實施例示例的一種多窗口示意圖;
圖2為本申請實施例公開的一種屏幕刷新系統(tǒng)結(jié)構(gòu)示意圖;
圖3為本申請實施例從窗口管理系統(tǒng)角度公開的一種屏幕刷新方法流程圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
在介紹方案之前首先對區(qū)域合并的過程進行介紹。
多個區(qū)域合并也可以看作多個區(qū)域求并集,多個區(qū)域合并后得到的合并區(qū)域為包圍多個區(qū)域的最小區(qū)域。
由于對于視頻終端而言,窗口區(qū)域一般都是矩形,因此多個矩形區(qū)域合并后的區(qū)域為包圍該多個矩形區(qū)域的最小矩形區(qū)域。
為了解決現(xiàn)有技術(shù)每個時間周期內(nèi)各窗口應(yīng)用均可向窗口管理系統(tǒng)發(fā)起刷新指令,導(dǎo)致窗口管理系統(tǒng)對各刷新區(qū)域求并集后,將不需要繪圖的窗口也作為發(fā)送繪圖指令的對象,導(dǎo)致多余的繪圖操作。本案發(fā)明人在研究過程首先發(fā)現(xiàn)一種解決方式,如下:
預(yù)先對多個窗口應(yīng)用進行編號,窗口應(yīng)用的編號也是對應(yīng)窗口的編號。由窗口管理系統(tǒng)在每個時間周期開始時刻,在順序編號的窗口應(yīng)用序列中確定當前編號對應(yīng)的目標窗口應(yīng)用,向所述目標窗口應(yīng)用發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;判斷所述目標窗口應(yīng)用是否為所述窗口應(yīng)用序列中最后一個窗口應(yīng)用,若是,將所述當前編號更改為所述窗口應(yīng)用序列中首個窗口應(yīng)用的編號,若否,將所述當前編號更改為所述窗口應(yīng)用序列中與所述目標窗口應(yīng)用近鄰的后一窗口應(yīng)用的編號。
目標窗口應(yīng)用在所述時間片的長度范圍內(nèi),持續(xù)檢測是否需要進行屏幕刷新,若確定需要進行屏幕刷新,則與所述窗口管理系統(tǒng)交互,實現(xiàn)對屏幕的刷新。
通過這種處理方式,同一時間周期內(nèi)只可能存在一個窗口應(yīng)用進行刷新繪圖,也即不會存在窗口區(qū)域合并的問題。
但是,在實際使用過程發(fā)明人發(fā)現(xiàn),當終端屏幕上窗口存在多個時,如N個,所有N個窗口全部刷新需要經(jīng)過N個時間周期。當N比較大時,導(dǎo)致窗口刷新一次時間較長,造成用戶體驗不佳。
為此,本申請發(fā)明人繼續(xù)研究,并成功研發(fā)出本申請的屏幕刷新方案。接下來對本申請方案進行介紹。
本申請?zhí)峁┝艘环N屏幕刷新系統(tǒng),參見圖2,圖2為本申請實施例公開的一種屏幕刷新系統(tǒng)結(jié)構(gòu)示意圖。
如圖2所示,該系統(tǒng)包括:
窗口管理系統(tǒng)100及至少一窗口應(yīng)用110,其中:
所述窗口管理系統(tǒng)100用于,在每個時間周期開始時刻,在順序編號的窗口應(yīng)用組序列中確定當前編號對應(yīng)的目標窗口應(yīng)用組,所述窗口應(yīng)用組序列中包括若干窗口應(yīng)用組,每一窗口應(yīng)用組中包含窗口區(qū)域符合設(shè)定近鄰關(guān)系的若干窗口對應(yīng)的窗口應(yīng)用110;向所述目標窗口應(yīng)用組中各目標窗口應(yīng)用110發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;判斷所述目標窗口應(yīng)用組是否為所述窗口應(yīng)用組序列中最后一個窗口應(yīng)用組,若是,將所述當前編號更改為所述窗口應(yīng)用組序列中首個窗口應(yīng)用組的編號,若否,將所述當前編號更改為所述窗口應(yīng)用組序列中與所述目標窗口應(yīng)用組近鄰的后一窗口應(yīng)用組的編號;
所述目標窗口應(yīng)用110用于,在所述時間片的長度范圍內(nèi),持續(xù)檢測是否需要進行屏幕刷新,若確定需要進行屏幕刷新,則與所述窗口管理系統(tǒng)100交互,實現(xiàn)對屏幕的刷新。
本申請實施例提供的屏幕刷新系統(tǒng)可以預(yù)先將多個窗口按照窗口區(qū)域近鄰關(guān)系劃分為多個組,每組內(nèi)的窗口對應(yīng)的窗口應(yīng)用構(gòu)成一窗口應(yīng)用組,多個窗口應(yīng)用組構(gòu)成序列且順序編號,窗口管理系統(tǒng)在每個時間周期內(nèi)僅從多個窗口應(yīng)用組中確定一個目標窗口應(yīng)用組,向目標窗口應(yīng)用組內(nèi)各目標窗口應(yīng)用發(fā)送時間片,而窗口應(yīng)用只有在收到時間片后,在時間片長度范圍內(nèi)檢測到需要刷新屏幕時才能夠與窗口管理系統(tǒng)交互,實現(xiàn)屏幕刷新。也即,在一個時間周期內(nèi),最多只有一個窗口應(yīng)用組內(nèi)的窗口應(yīng)用能夠?qū)崿F(xiàn)屏幕刷新,且同一窗口應(yīng)用組內(nèi)的各窗口應(yīng)用對應(yīng)的窗口區(qū)域比較靠近,即便區(qū)域合并也不會造成過多非必要繪圖,避免了現(xiàn)有技術(shù)同一時間周期內(nèi)各窗口應(yīng)用均可發(fā)起刷新指令,導(dǎo)致窗口管理系統(tǒng)對各刷新區(qū)域求并集后,將不需要繪圖的窗口也作為發(fā)送繪圖指令的對象,導(dǎo)致多余的繪圖操作。
接下來,對窗口管理系統(tǒng)對各窗口應(yīng)用進行分組,將窗口區(qū)域符合設(shè)定近鄰關(guān)系的窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組的過程進行介紹,其包括:
步驟S1、將每一窗口初始化為一窗口組,得到窗口組序列;
具體地,初始化時每一窗口均作為一窗口組,窗口組中僅包含一窗口。多個窗口組組成窗口組序列。
步驟S2、在所述窗口組序列中取一窗口組,計算取出的窗口組與窗口組序列中其它各窗口組的密度差值,若取出的窗口組與目標窗口組的密度差值小于設(shè)定閾值,則將取出的窗口組中各窗口合并入所述目標窗口組;
具體地,每個窗口組均存在一個密度屬性。
為了解釋窗口組密度概念,首先對區(qū)域密度進行解釋:
假設(shè)兩個區(qū)域a和b,合并后區(qū)域為c。
對單個區(qū)域a,b本身的區(qū)域,密度為單位密度1,質(zhì)量等同于面積w*h,即a.w*a.h和b.w*b.h,其中a.w為區(qū)域a的寬度,a.h為區(qū)域a的高度。同理針對b.w和b.h。
對兩個區(qū)域合并后區(qū)域c的密度,如下:
d=總質(zhì)量/合并后面積=(a.w*a.h+b.w*b.h)/(c.w*c.h)。
在此基礎(chǔ)上,合并前區(qū)域與合并后區(qū)域的密度差值的含義為:合并后區(qū)域的密度與單位密度1的差值。
在介紹了區(qū)域密度及密度差值概念之后,對窗口組密度進行介紹:
窗口組的密度為:窗口組中各窗口區(qū)域合并后區(qū)域的密度。
本申請可以設(shè)定一閥值,若取出的窗口組與窗口組序列中某一目標窗口組的密度差值小于設(shè)定閥值,則說明二兩個窗口組中的窗口可以合并為一個窗口組。因此,可以將取出的窗口組中各窗口合并入目標窗口組。
可選的,計算取出的窗口組與目標窗口組的密度差值的過程,可以包括:
1、計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的面積和值,其中組區(qū)域為對應(yīng)窗口組中各窗口的窗口區(qū)域合并后的合并區(qū)域,該合并區(qū)域為包圍各窗口的窗口區(qū)域的最小區(qū)域;
2、計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的合并區(qū)域的面積值,作為目標面積值,該合并區(qū)域為包圍取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的最小區(qū)域;
3、計算所述面積和值與所述目標面積值的比值,該比值與單位密度1的差值作為取出的窗口組與目標窗口組的密度差值。
重復(fù)步驟S2,直至所述窗口組序列中任意兩個窗口組均不能合并為止,將所述窗口組序列中每一窗口組中的各窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,為各窗口應(yīng)用組順序編號。
具體地,通過不斷重復(fù)步驟S2,最終得到的窗口組序列中任意兩個窗口組均不滿足合并條件。此時,將所述窗口組序列中每一窗口組中的各窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,為各窗口應(yīng)用組順序編號。
可選的,窗口應(yīng)用組序列中各窗口應(yīng)用組的編號可以是以1為單位遞增的。舉例如,序列中自首個窗口應(yīng)用組至第n個窗口應(yīng)用組的編號依次為:1、2……n。
基于此種編號方式,本申請可以設(shè)置初始化狀態(tài)時當前編號為1。每當時間周期加1時,當前編號也加1,直至當前編號加1后超過最大窗口應(yīng)用組的編號時,將其翻轉(zhuǎn)為1。也即,當前編號從1至n循環(huán)變化。
參見圖1示例的情況進行舉例說明:
屏幕10中共包含三個窗口,分別為窗口11、窗口12和窗口13。定義三個窗口的編號為1、2和3,對應(yīng)的窗口應(yīng)用的編號相同。
經(jīng)過窗口組合并,假設(shè)窗口11組成窗口組1,窗口12和窗口13組成窗口組2。
在第一個時間周期內(nèi),當前編號為1。窗口管理系統(tǒng)向編號為1的窗口應(yīng)用組中的窗口應(yīng)用11發(fā)送時間片,時間片長度為時間周期的長度。
窗口應(yīng)用11收到時間片后,持續(xù)檢測本窗口是否需要進行刷新。若在時間片范圍內(nèi)檢測到需要刷新,則向窗口管理系統(tǒng)發(fā)送刷新指令,并在窗口管理系統(tǒng)的配合下實現(xiàn)對窗口應(yīng)用11的窗口的刷新。
在第二個時間周期到來時,當前編號加1,變成2。窗口管理系統(tǒng)向編號為2的窗口應(yīng)用組中的窗口應(yīng)用12和13發(fā)送時間片,時間片長度為時間周期的長度。
窗口應(yīng)用12和13在收到時間片后,持續(xù)檢測本窗口是否需要進行刷新。若在時間片長度范圍內(nèi)檢測到不需要進行刷新,則不發(fā)送任何信息。
在第三個時間周期到來時,當前編號加1,變成3。而3超過了最大窗口應(yīng)用組編號,因此當前編號翻轉(zhuǎn)變成1。重復(fù)上述過程。
可選的,上述實施例中目標窗口應(yīng)用與所述窗口管理系統(tǒng)交互,實現(xiàn)對屏幕的刷新的過程,可以包括:
所述目標窗口應(yīng)用向所述窗口管理系統(tǒng)發(fā)送刷新指令,刷新指令中包含刷新區(qū)域;
所述窗口管理系統(tǒng)用于,獲取當前周期內(nèi)接收的各刷新指令所包含的刷新區(qū)域,對各刷新區(qū)域進行合并,得到合并刷新區(qū)域;根據(jù)終端屏幕上的各窗口區(qū)域,確定窗口區(qū)域與所述合并刷新區(qū)域存在交集的待刷新窗口;按照窗口層次由低至高順序,向確定的各所述待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送繪圖指令;
所述待刷新窗口應(yīng)用還用于,在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖;
所述窗口管理系統(tǒng)還用于,在確定各待刷新窗口應(yīng)用均繪圖完畢后,對幀緩沖區(qū)frame buffer中的內(nèi)容進行上屏顯示。
可選的,窗口管理系統(tǒng)向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令可以包含,待刷新窗口的窗口區(qū)域與所述合并刷新區(qū)域的交集區(qū)域。該交集區(qū)域即為戴刷新窗口需要繪圖的區(qū)域。
在此基礎(chǔ)上,待刷新窗口應(yīng)用在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,可以包括:
在收到所述窗口管理系統(tǒng)發(fā)送的包含所述交集區(qū)域的繪圖指令時,調(diào)用所述窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
具體地,窗口管理系統(tǒng)提供了繪圖接口,以供窗口應(yīng)用進行調(diào)用。窗口應(yīng)用調(diào)用窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
與上述實施例不同的是,窗口管理系統(tǒng)向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令可以包含,所述合并刷新區(qū)域。也即,窗口管理系統(tǒng)直接將合并刷新區(qū)域攜帶在繪圖指令中發(fā)送給待刷新窗口應(yīng)用。
在此基礎(chǔ)上,待刷新窗口應(yīng)用在收到所述窗口管理系統(tǒng)發(fā)送的繪圖指令時,與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,可以包括:
1、在收到所述窗口管理系統(tǒng)發(fā)送的包括區(qū)域組的繪圖指令時,確定本窗口應(yīng)用對應(yīng)窗口的窗口區(qū)域與所述繪圖指令包含的合并刷新區(qū)域的交集區(qū)域;
具體地,待刷新窗口應(yīng)用收到繪圖指令時,確定需要繪圖的區(qū)域,該確定過程包括:確定本窗口應(yīng)用對應(yīng)窗口的窗口區(qū)域與所述繪圖指令包含的合并刷新區(qū)域的交集區(qū)域。
2、調(diào)用所述窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
具體地,窗口管理系統(tǒng)提供了繪圖接口,以供窗口應(yīng)用進行調(diào)用。窗口應(yīng)用調(diào)用窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
通過上述兩個實施例可以看出,交集區(qū)域可以由窗口管理系統(tǒng)確定,也可以由待刷新窗口應(yīng)用確定。在確定了待繪圖的交集區(qū)域之后,調(diào)用所述窗口管理系統(tǒng)提供的繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
可選的,區(qū)別于上述兩個實施例,本申請中窗口管理系統(tǒng)向待刷新窗口應(yīng)用發(fā)送的繪圖指令中可以不攜帶任何信息?;诖?,待刷新窗口應(yīng)用調(diào)用繪圖接口進行繪圖時,向窗口管理系統(tǒng)提供整個窗口區(qū)域需要繪圖的內(nèi)容,由窗口管理系統(tǒng)計算當前調(diào)用繪圖接口的待刷新窗口應(yīng)用對應(yīng)窗口的窗口區(qū)域,與所述合并刷新區(qū)域的交集區(qū)域,進而對提供的需要繪圖的內(nèi)容進行裁剪,保留交集區(qū)域?qū)?yīng)的內(nèi)容,進而對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
基于上述屏幕刷新系統(tǒng),本申請從窗口管理系統(tǒng)的角度對屏幕刷新方法進行了介紹,參見圖3,圖3為本申請實施例從窗口管理系統(tǒng)角度公開的一種屏幕刷新方法流程圖。
如圖3所示,該方法包括:
步驟S300、在當前時間周期開始時刻,在順序編號的窗口應(yīng)用組序列中確定當前編號對應(yīng)的目標窗口應(yīng)用組;
所述窗口應(yīng)用組序列中包括若干窗口應(yīng)用組,每一窗口應(yīng)用組中包含窗口區(qū)域符合設(shè)定近鄰關(guān)系的若干窗口對應(yīng)的窗口應(yīng)用。
步驟S310、向所述目標窗口應(yīng)用組中各目標窗口應(yīng)用發(fā)送時間片,所述時間片的長度與所述時間周期的長度相同;
步驟S320、判斷所述目標窗口應(yīng)用組是否為所述窗口應(yīng)用組序列中最后一個窗口應(yīng)用組;若是,執(zhí)行步驟S330,若否,執(zhí)行步驟S340;
步驟S330、將所述當前編號更改為所述窗口應(yīng)用組序列中首個窗口應(yīng)用組的編號;
步驟S340、將所述當前編號更改為所述窗口應(yīng)用組序列中與所述目標窗口應(yīng)用組近鄰的后一窗口應(yīng)用組的編號;
步驟S350、獲取當前周期內(nèi)接收的各目標窗口應(yīng)用發(fā)送的刷新指令所包含的刷新區(qū)域,對各刷新區(qū)域進行合并,得到合并刷新區(qū)域;
步驟S360、根據(jù)終端屏幕上的各窗口區(qū)域,確定窗口區(qū)域與所述合并刷新區(qū)域存在交集的待刷新窗口;
步驟S370、按照窗口層次由低至高順序,向確定的各所述待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送繪圖指令,以觸發(fā)待刷新窗口應(yīng)用與所述窗口管理系統(tǒng)交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖,及對繪圖后的幀緩沖區(qū)frame buffer中的內(nèi)容進行上屏顯示。
具體地,窗口管理系統(tǒng)按照窗口層次由低至高順序,向各待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送繪圖指令,保證各待刷新窗口應(yīng)用順序繪圖,不會存在窗口層次高的窗口應(yīng)用先于窗口層次低的窗口應(yīng)用繪圖。
本申請實施例提供的屏幕刷新方法,窗口管理系統(tǒng)在每個時間周期內(nèi)僅從多個窗口應(yīng)用組中確定一個目標窗口應(yīng)用組,向目標窗口應(yīng)用組內(nèi)各目標窗口應(yīng)用發(fā)送時間片,而窗口應(yīng)用只有在收到時間片后,在時間片長度范圍內(nèi)檢測到需要刷新屏幕時才能夠與窗口管理系統(tǒng)交互,實現(xiàn)屏幕刷新。也即,在一個時間周期內(nèi),最多只有一個窗口應(yīng)用組內(nèi)的窗口應(yīng)用能夠?qū)崿F(xiàn)屏幕刷新,且同一窗口應(yīng)用組內(nèi)的各窗口應(yīng)用對應(yīng)的窗口區(qū)域比較靠近,即便區(qū)域合并也不會造成過多非必要繪圖,避免了現(xiàn)有技術(shù)同一時間周期內(nèi)各窗口應(yīng)用均可發(fā)起刷新指令,導(dǎo)致窗口管理系統(tǒng)對各刷新區(qū)域求并集后,將不需要繪圖的窗口也作為發(fā)送繪圖指令的對象,導(dǎo)致多余的繪圖操作。
可選的,在上述實施例的基礎(chǔ)上,本申請的方法還可以包括:
對各窗口應(yīng)用進行分組,將窗口區(qū)域符合設(shè)定近鄰關(guān)系的窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,該過程可以包括:
步驟S1、將每一窗口初始化為一窗口組,得到窗口組序列;
步驟S2、在所述窗口組序列中取一窗口組,計算取出的窗口組與窗口組序列中其它各窗口組的密度差值,若取出的窗口組與目標窗口組的密度差值小于設(shè)定閾值,則將取出的窗口組中各窗口合并入所述目標窗口組;
重復(fù)步驟S2,直至所述窗口組序列中任意兩個窗口組均不能合并為止,將所述窗口組序列中每一窗口組中的各窗口對應(yīng)的窗口應(yīng)用劃分為同一窗口應(yīng)用組,為各窗口應(yīng)用組順序編號。
可選的,上述步驟S2中計算取出的窗口組與目標窗口組的密度差值的過程,可以包括:
1、計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的面積和值,其中組區(qū)域為對應(yīng)窗口組中各窗口的窗口區(qū)域合并后的合并區(qū)域,該合并區(qū)域為包圍各窗口的窗口區(qū)域的最小區(qū)域;
2、計算取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的合并區(qū)域的面積值,作為目標面積值,該合并區(qū)域為包圍取出的窗口組的組區(qū)域與目標窗口組的組區(qū)域的最小區(qū)域;
3、計算所述面積和值與所述目標合并區(qū)域的比值,該比值與單位密度1的差值作為取出的窗口組與目標窗口組的密度差值。
進一步可選的,上述窗口管理系統(tǒng)向待刷新窗口對應(yīng)的待刷新窗口應(yīng)用發(fā)送的繪圖指令中可以包含,待刷新窗口的窗口區(qū)域與所述合并刷新區(qū)域的交集區(qū)域。
基于此,所述窗口管理系統(tǒng)與待刷新窗口應(yīng)用交互,實現(xiàn)對幀緩沖區(qū)frame buffer的繪圖的過程,可以包括:
窗口管理系統(tǒng)接收待刷新窗口應(yīng)用對繪圖接口的調(diào)用請求,所述調(diào)用請求包括所述交集區(qū)域;
窗口管理系統(tǒng)調(diào)用所述繪圖接口,對幀緩沖區(qū)frame buffer中所述交集區(qū)域進行繪圖。
另一種可實施方式,窗口管理系統(tǒng)向待刷新窗口應(yīng)用發(fā)送的繪圖指令中可以包含所述合并刷新區(qū)域。由待刷新窗口應(yīng)用確定本窗口應(yīng)用對應(yīng)窗口的窗口區(qū)域與所述繪圖指令包含的合并刷新區(qū)域的交集區(qū)域,進而基于該交集區(qū)域調(diào)用繪圖接口進行繪圖。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。