欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

屏幕刷新率的確定方法和裝置與流程

文檔序號:12363405閱讀:345來源:國知局
屏幕刷新率的確定方法和裝置與流程

本申請涉及應(yīng)用測試領(lǐng)域,尤其涉及屏幕刷新率(Frames Per Second,F(xiàn)PS)的確定方法和裝置。



背景技術(shù):

當(dāng)前,隨著智能手機(jī)的普及,針對智能手機(jī)所開發(fā)的手機(jī)應(yīng)用也是種類繁多。由于智能手機(jī)的硬件局限性,手機(jī)應(yīng)用往往需要比計算機(jī)應(yīng)用有更嚴(yán)格的性能要求,其中,應(yīng)用運(yùn)行流暢是對手機(jī)應(yīng)用的一個基本的性能要求,它直接影響著用戶體驗,為了衡量手機(jī)應(yīng)用運(yùn)行是否流暢,通常,可以獲取手機(jī)應(yīng)用運(yùn)行時的屏幕刷新率,將屏幕刷新率作為衡量手機(jī)應(yīng)用是否流暢的量化指標(biāo)。

現(xiàn)有技術(shù)中,針對手機(jī)上常用的安卓(Android)操作系統(tǒng),通過獲取應(yīng)用頁面根節(jié)點(diǎn)DecorView,然后設(shè)置事件監(jiān)聽器OnPreDrawListener對DecorView進(jìn)行監(jiān)聽,從而實(shí)現(xiàn)對頁面的重畫進(jìn)行監(jiān)聽,以便確定屏幕刷新率。

由上可見,當(dāng)采用現(xiàn)有技術(shù)中的方式來確定屏幕刷新率時,由于只針對應(yīng)用根節(jié)點(diǎn)設(shè)置監(jiān)聽器,所以當(dāng)被測應(yīng)用調(diào)用第三方的activity組件時,無法得到此時的屏幕刷新率。



技術(shù)實(shí)現(xiàn)要素:

本申請實(shí)施例提供了屏幕刷新率的確定方法和裝置,通過將動態(tài)鏈接庫加入系統(tǒng)進(jìn)程,能夠得到系統(tǒng)在任何應(yīng)用切換狀態(tài)下的屏幕刷新率。

一方面,提供了一種屏幕刷新率的確定方法,所述方法包括:

采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;

通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率,包括:

在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),通過所述第二圖像渲染函數(shù)調(diào)用所述第一圖像渲染函數(shù)完成屏幕刷新操作,并通過變量累加屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,包括:

找到圖層投遞進(jìn)程的進(jìn)程文件目錄地址;

根據(jù)所述目錄地址,利用系統(tǒng)調(diào)用函數(shù)控制圖層投遞進(jìn)程;

獲取所述圖層投遞進(jìn)程中庫加載函數(shù)、地址查找函數(shù)和庫移除函數(shù)的函數(shù)地址,所述庫加載函數(shù)用于將所述動態(tài)鏈接庫加載到所述圖層投遞進(jìn)程的內(nèi)存中,所述地址查找函數(shù)用于查找所述動態(tài)鏈接庫中的指定函數(shù)在所述內(nèi)存中的地址,所述庫移除函數(shù)用于在滿足預(yù)設(shè)條件時將所述動態(tài)鏈接庫從所述圖層投遞進(jìn)程的內(nèi)存中移除;

根據(jù)所述函數(shù)地址,調(diào)用所述庫加載函數(shù)、所述地址查找函數(shù)和所述庫移除函數(shù)將所述動態(tài)鏈接庫加入所述圖層投遞進(jìn)程。

優(yōu)選地,所述通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù),包括:

通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,記錄所述第一圖像渲染函數(shù) 的函數(shù)地址;

獲取所述第一圖像渲染函數(shù)的函數(shù)地址在全局偏移表(Global Offset Tables,GOT)中的位置信息;

根據(jù)所述位置信息,用所述第二圖像渲染函數(shù)的函數(shù)地址覆蓋GOT中的所述第一圖像渲染函數(shù)的函數(shù)地址,以便在屏幕刷新重畫時調(diào)用所述第二圖像渲染函數(shù)而非所述第一圖像渲染函數(shù)。

優(yōu)選地,所述通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù),包括:

通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便創(chuàng)建共享內(nèi)存,并通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

所述在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率,包括:

在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率,并將所述屏幕刷新率寫入所述共享內(nèi)存。

另一方面,提供了一種屏幕刷新率的確定裝置,所述裝置包括:

注入單元,用于采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;

鉤掛單元,用于通過所述圖層投遞進(jìn)程調(diào)用所述注入單元注入的動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

確定單元,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述鉤掛單元替換后的所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述確定單元包括:

屏幕刷新子單元,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),通過所述第二圖像渲染函數(shù)調(diào)用所述第一圖像渲染函數(shù)完成屏幕刷新操作;

確定子單元,用于通過變量累加屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述注入單元包括:

查找子單元,用于找到圖層投遞進(jìn)程的進(jìn)程文件目錄地址;

控制子單元,用于根據(jù)所述查找子單元找到的目錄地址,利用系統(tǒng)調(diào)用函數(shù)控制圖層投遞進(jìn)程;

地址獲取子單元,用于獲取所述圖層投遞進(jìn)程中庫加載函數(shù)、地址查找函數(shù)和庫移除函數(shù)的函數(shù)地址,所述庫加載函數(shù)用于將所述動態(tài)鏈接庫加載到所述圖層投遞進(jìn)程的內(nèi)存中,所述地址查找函數(shù)用于查找所述動態(tài)鏈接庫中的指定函數(shù)在所述內(nèi)存中的地址,所述庫移除函數(shù)用于在滿足預(yù)設(shè)條件時將所述動態(tài)鏈接庫從所述圖層投遞進(jìn)程的內(nèi)存中移除;

注入子單元,用于根據(jù)所述地址獲取子單元獲取的函數(shù)地址,調(diào)用所述庫加載函數(shù)、所述地址查找函數(shù)和所述庫移除函數(shù)將所述動態(tài)鏈接庫加入所述圖層投遞進(jìn)程。

優(yōu)選地,所述鉤掛單元包括:

記錄子單元,用于通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,記錄所述第一圖像渲染函數(shù)的函數(shù)地址;

位置獲取子單元,用于獲取所述第一圖像渲染函數(shù)的函數(shù)地址在GOT中的位置信息;

覆蓋子單元,用于根據(jù)所述位置獲取子單元獲取的位置信息,用所述第二圖像渲染函數(shù)的函數(shù)地址覆蓋GOT中的所述第一圖像渲染函數(shù)的函數(shù)地址,以便在屏幕刷新重畫時調(diào)用所述第二圖像渲染函數(shù)而非所述第一圖像渲染函數(shù)。

優(yōu)選地,所述鉤掛單元包括:

創(chuàng)建子單元,用于通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便創(chuàng)建共享內(nèi)存;

替換子單元,用于通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

所述確定單元包括:

確定子單元,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率;

寫入子單元,用于將所述確定子單元確定的屏幕刷新率寫入所述創(chuàng)建子單元創(chuàng)建的共享內(nèi)存。

本申請?zhí)峁┝艘环N屏幕刷新率的確定方法,先采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。由上可見,本申請實(shí)施例中,通過將動態(tài)鏈接庫加入圖層投遞進(jìn)程的方式來實(shí)現(xiàn)確定屏幕刷新率,由于上述方式屬于針對系統(tǒng)進(jìn)程的更改,不會對應(yīng)用本身產(chǎn)生任何影響,并且能夠得到系統(tǒng)在任何應(yīng)用切換狀態(tài)下的屏幕刷新率。

附圖說明

圖1為本申請實(shí)施例提供的屏幕刷新率的確定方法流程圖;

圖2為本申請一個具體實(shí)施例提供的注入方法流程圖;

圖3為本申請一個具體實(shí)施例提供的鉤掛方法流程圖;

圖4為本申請一個具體實(shí)施例提供的屏幕刷新率數(shù)據(jù)傳遞示意圖;

圖5為本申請實(shí)施例提供的屏幕刷新率的確定裝置結(jié)構(gòu)圖。

具體實(shí)施方式

為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。

為便于對本申請實(shí)施例的理解,下面將結(jié)合附圖以具體實(shí)施例做進(jìn)一步的解釋說明,實(shí)施例并不構(gòu)成對本申請實(shí)施例的限定。

圖1為本申請實(shí)施例提供的屏幕刷新率的確定方法流程圖,該方法的執(zhí)行主體可以為具有安卓操作系統(tǒng)的智能手機(jī),或者,具有安卓操作系統(tǒng)的其他終端,如圖1所示,該方法具體包括:

步驟101,采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作。

其中,圖層投遞進(jìn)程可以用于轉(zhuǎn)換程序所畫內(nèi)容,并投遞給底層硬件進(jìn)行顯示,例如,安卓操作系統(tǒng)的Surfaceflinger進(jìn)程。第一圖像渲染函數(shù)可以用于將需要顯示的下一幀圖像內(nèi)容交換到屏幕正在顯示的圖像緩存中,例如,Eglswapbuffers函數(shù)。

本申請實(shí)施例中,所述采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,具體可以包括:找到圖層投遞進(jìn)程的進(jìn)程文件目錄地址;根據(jù)所述目錄地址,利用系統(tǒng)調(diào)用函數(shù)控制圖層投遞進(jìn)程;獲取所述圖層投遞進(jìn)程中庫加載函數(shù)、地址查找函數(shù)和庫移除函數(shù)的函數(shù)地址,所述庫加載函數(shù)用于將所述動態(tài)鏈接庫加載到所述圖層投遞進(jìn)程的內(nèi)存中,所述地址查找函數(shù)用于查找所述動 態(tài)鏈接庫中的指定函數(shù)在所述內(nèi)存中的地址,所述庫移除函數(shù)用于在滿足預(yù)設(shè)條件時將所述動態(tài)鏈接庫從所述圖層投遞進(jìn)程的內(nèi)存中移除;根據(jù)所述函數(shù)地址,調(diào)用所述庫加載函數(shù)、所述地址查找函數(shù)和所述庫移除函數(shù)將所述動態(tài)鏈接庫加入所述圖層投遞進(jìn)程。圖2為本申請一個具體實(shí)施例提供的注入方法流程圖,參照圖2,為了將動態(tài)鏈接庫加入Surfaceflinger進(jìn)程,可以先找到Surfaceflinger進(jìn)程的proc目錄地址,然后根據(jù)所述目錄地址,利用ptrace函數(shù)控制Surfaceflinger進(jìn)程,獲取Surfaceflinger進(jìn)程中dlopen函數(shù)、dlsym函數(shù)和dlclose函數(shù)的函數(shù)地址,再根據(jù)所述函數(shù)地址,調(diào)用dlopen函數(shù)、dlsym函數(shù)和dlclose函數(shù)將動態(tài)鏈接庫加入Surfaceflinger進(jìn)程。

步驟102,通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù)。

其中,具體可以通過Surfaceflinger進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將Eglswapbuffers函數(shù)替換為fakeEglswapbuffers函數(shù)。

本申請實(shí)施例中,所述通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù),可以包括下述處理過程:通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,記錄所述第一圖像渲染函數(shù)的函數(shù)地址;獲取所述第一圖像渲染函數(shù)的函數(shù)地址在全局偏移表(Global Offset Tables,GOT)中的位置信息;根據(jù)所述位置信息,用所述第二圖像渲染函數(shù)的函數(shù)地址覆蓋GOT中的所述第一圖像渲染函數(shù)的函數(shù)地址,以便在屏幕刷新重畫時調(diào)用所述第二圖像渲染函數(shù)而非所述第一圖像渲染函數(shù)。

此外,在上述鉤掛方法中,還可以先創(chuàng)建共享內(nèi)存,在確定出屏幕刷新率后,將屏幕刷新率寫入共享內(nèi)存,以便應(yīng)用程序可以從該共享內(nèi)存中讀取屏幕刷新率,從而實(shí)現(xiàn)將系統(tǒng)進(jìn)程中得到的屏幕刷新率的數(shù)值傳遞到應(yīng)用進(jìn)程中。

圖3為本申請一個具體實(shí)施例提供的鉤掛方法流程圖,參照圖3,為了將Eglswapbuffers函數(shù)替換為fakeEglswapbuffers函數(shù),可以通過Surfaceflinger進(jìn)程調(diào)用動態(tài)鏈接庫,記錄Eglswapbuffers函數(shù)的函數(shù)地址,獲取Eglswapbuffers函數(shù)的函數(shù)地址在GOT表中的位置信息,根據(jù)所述位置信息,用fakeEglswapbuffers函數(shù)的函數(shù)地址覆蓋GOT表中的Eglswapbuffers函數(shù)的函數(shù)地址,以便在屏幕刷新重畫時調(diào)用fakeEglswapbuffers函數(shù)而非Eglswapbuffers函數(shù)。

在上述鉤掛方法中,還可以先使用mmap函數(shù)創(chuàng)建共享內(nèi)存,在確定出屏幕刷新率后,將屏幕刷新率寫入共享內(nèi)存,以便應(yīng)用程序可以從該共享內(nèi)存中讀取屏幕刷新率,從而實(shí)現(xiàn)將Surfaceflinger進(jìn)程中得到的屏幕刷新率的數(shù)值傳遞到應(yīng)用進(jìn)程中。

圖4為本申請一個具體實(shí)施例提供的屏幕刷新率數(shù)據(jù)傳遞示意圖,參照圖4,本申請實(shí)施例中,可以通過注入程序?qū)討B(tài)鏈接庫加入運(yùn)行中的Surfaceflinger進(jìn)程,由Surfaceflinger進(jìn)程調(diào)用該動態(tài)鏈接庫,從而完成Eglswapbuffers函數(shù)鉤掛,將Eglswapbuffers函數(shù)替換為fakeEglswapbuffers函數(shù),在屏幕刷新重畫時,Surfaceflinger進(jìn)程調(diào)用fakeEglswapbuffers函數(shù),fakeEglswapbuffers函數(shù)中先調(diào)用Eglswapbuffers函數(shù)完成屏幕刷新操作,然后通過一個變量累加刷新次數(shù),最后通過該計數(shù)值計算得到FPS并寫入共享內(nèi)存。應(yīng)用程序可以通過JNI接口讀取共享內(nèi)存中的FPS值提供給上層使用。

步驟103,在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

具體地,在屏幕刷新重畫時,可以通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),通過所述第二圖像渲染函數(shù)調(diào)用所述第一圖像渲染函數(shù)完成屏幕刷新操作,并通過變量累加屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏 幕刷新率。

例如,在屏幕刷新重畫時,通過Surfaceflinger進(jìn)程調(diào)用fakeEglswapbuffers函數(shù),以便統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。其中,fakeEglswapbuffers函數(shù)可以通過調(diào)用Eglswapbuffers函數(shù)完成屏幕刷新操作,并通過變量累加屏幕刷新次數(shù),根據(jù)屏幕刷新次數(shù)確定屏幕刷新率。

本申請實(shí)施例提供了一種屏幕刷新率的確定方法,先采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。由上可見,本申請實(shí)施例中,通過將動態(tài)鏈接庫加入圖層投遞進(jìn)程的方式來實(shí)現(xiàn)確定屏幕刷新率,由于上述方式屬于針對系統(tǒng)進(jìn)程的更改,不會對應(yīng)用本身產(chǎn)生任何影響,并且能夠得到系統(tǒng)在任何應(yīng)用切換狀態(tài)下的屏幕刷新率。

具體地,由于Android底層使用Surfaceflinger服務(wù)完成屏幕的刷新重畫,而每次重畫都會調(diào)用EglSwapBuffers方法,本申請通過注入Surfaceflinger進(jìn)程,然后將EglSwapBuffers函數(shù)映射為自己的fakeEglswapbuffers函數(shù)完成每次屏幕更新的計數(shù),并通過該計數(shù)計算出屏幕刷新率。整個過程都自己實(shí)現(xiàn),不依賴框架,同時因為注入對象是系統(tǒng)服務(wù),所以對應(yīng)用程序沒有影響而且能夠得到系統(tǒng)在任何應(yīng)用切換狀態(tài)下的屏幕刷新率。

圖5為本申請實(shí)施例提供的屏幕刷新率的確定裝置結(jié)構(gòu)圖,該裝置用于執(zhí)行本申請實(shí)施例提供的屏幕刷新率的確定方法,所述裝置包括:

注入單元501,用于采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所 述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;

鉤掛單元502,用于通過所述圖層投遞進(jìn)程調(diào)用所述注入單元501注入的動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

確定單元503,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述鉤掛單元502替換后的所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述確定單元503包括:

屏幕刷新子單元,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),通過所述第二圖像渲染函數(shù)調(diào)用所述第一圖像渲染函數(shù)完成屏幕刷新操作;

確定子單元,用于通過變量累加屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。

優(yōu)選地,所述注入單元501包括:

查找子單元,用于找到圖層投遞進(jìn)程的進(jìn)程文件目錄地址;

控制子單元,用于根據(jù)所述查找子單元找到的目錄地址,利用系統(tǒng)調(diào)用函數(shù)控制圖層投遞進(jìn)程;

地址獲取子單元,用于獲取所述圖層投遞進(jìn)程中庫加載函數(shù)、地址查找函數(shù)和庫移除函數(shù)的函數(shù)地址,所述庫加載函數(shù)用于將所述動態(tài)鏈接庫加載到所述圖層投遞進(jìn)程的內(nèi)存中,所述地址查找函數(shù)用于查找所述動態(tài)鏈接庫中的指定函數(shù)在所述內(nèi)存中的地址,所述庫移除函數(shù)用于在滿足預(yù)設(shè)條件時將所述動態(tài)鏈接庫從所述圖層投遞進(jìn)程的內(nèi)存中移除;

注入子單元,用于根據(jù)所述地址獲取子單元獲取的函數(shù)地址,調(diào)用所述庫加載函數(shù)、所述地址查找函數(shù)和所述庫移除函數(shù)將所述動態(tài)鏈接庫加入所述圖層投遞進(jìn)程。

優(yōu)選地,所述鉤掛單元502包括:

記錄子單元,用于通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,記錄所述第一圖像渲染函數(shù)的函數(shù)地址;

位置獲取子單元,用于獲取所述第一圖像渲染函數(shù)的函數(shù)地址在GOT中的位置信息;

覆蓋子單元,用于根據(jù)所述位置獲取子單元獲取的位置信息,用所述第二圖像渲染函數(shù)的函數(shù)地址覆蓋GOT中的所述第一圖像渲染函數(shù)的函數(shù)地址,以便在屏幕刷新重畫時調(diào)用所述第二圖像渲染函數(shù)而非所述第一圖像渲染函數(shù)。

優(yōu)選地,所述鉤掛單元502包括:

創(chuàng)建子單元,用于通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便創(chuàng)建共享內(nèi)存;

替換子單元,用于通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);

所述確定單元503包括:

確定子單元,用于在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率;

寫入子單元,用于將所述確定子單元確定的屏幕刷新率寫入所述創(chuàng)建子單元創(chuàng)建的共享內(nèi)存。

本申請實(shí)施例提供了一種屏幕刷新率的確定裝置,先由注入單元501采用注入的方式將動態(tài)鏈接庫加入圖層投遞進(jìn)程,所述圖層投遞進(jìn)程為系統(tǒng)進(jìn)程,所述圖層投遞進(jìn)程通過調(diào)用第一圖像渲染函數(shù)完成屏幕刷新操作;再由鉤掛單元502通過所述圖層投遞進(jìn)程調(diào)用所述動態(tài)鏈接庫,以便通過鉤掛方法將所述第一圖像渲染函數(shù)替換為第二圖像渲染函數(shù);最后由確定單元503在屏幕刷新重畫時,通過所述圖層投遞進(jìn)程調(diào)用所述第二圖像渲染函數(shù),以 便通過所述第二圖像渲染函數(shù)統(tǒng)計屏幕刷新次數(shù),根據(jù)所述屏幕刷新次數(shù)確定屏幕刷新率。由上可見,本申請實(shí)施例中,通過將動態(tài)鏈接庫加入圖層投遞進(jìn)程的方式來實(shí)現(xiàn)確定屏幕刷新率,由于上述方式屬于針對系統(tǒng)進(jìn)程的更改,不會對應(yīng)用本身產(chǎn)生任何影響,并且能夠得到系統(tǒng)在任何應(yīng)用切換狀態(tài)下的屏幕刷新率。

專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的對象及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本申請的范圍。

結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。

以上所述的具體實(shí)施方式,對本申請的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本申請的具體實(shí)施方式而已,并不用于限定本申請的保護(hù)范圍,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
梅河口市| 曲靖市| 自贡市| 阿拉善左旗| 丹凤县| 玛纳斯县| 资中县| 繁昌县| 乐平市| 堆龙德庆县| 三都| 阳谷县| 敦煌市| 三原县| 三亚市| 麻江县| 元氏县| 阿图什市| 秦安县| 玛多县| 赫章县| 大丰市| 嘉荫县| 泸西县| 天镇县| 南阳市| 嘉兴市| 洪湖市| 西昌市| 秀山| 海门市| 兴义市| 邵阳县| 威信县| 息烽县| 望城县| 高台县| 镇远县| 仁怀市| 阳朔县| 吴堡县|