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

一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法

文檔序號(hào):6504264閱讀:218來(lái)源:國(guó)知局
一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法
【專利摘要】本發(fā)明提供一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,包括如下步驟:打開(kāi)Linux操作系統(tǒng)內(nèi)核的幀緩沖支持,構(gòu)建開(kāi)發(fā)環(huán)境;將DirectFB移植于基于龍芯平臺(tái)的機(jī)器上;創(chuàng)建一個(gè)標(biāo)準(zhǔn)圖形卡含有的顯示層,創(chuàng)建主表面、離屏表面、鼠標(biāo);設(shè)置窗口的背景、大小和位置參數(shù),創(chuàng)建客戶端窗口;創(chuàng)建該客戶端窗口所在表面的句柄、事件緩沖區(qū)和消息緩沖區(qū),為事件緩沖區(qū)和消息緩沖區(qū)創(chuàng)建文件描述符;監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符;使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示。本發(fā)明相對(duì)于現(xiàn)有技術(shù),從通信機(jī)制、顯示輸出和本地事件處理三個(gè)方面對(duì)rdesktop進(jìn)行優(yōu)化,避免了因使用rdesktop時(shí)占用過(guò)多的CPU資源,造成圖形用戶界面無(wú)法啟動(dòng)的問(wèn)題。
【專利說(shuō)明】—種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Linux操作系統(tǒng)【技術(shù)領(lǐng)域】,特別涉及基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法。
【背景技術(shù)】
[0002]目前龍芯平臺(tái)Linux操作系統(tǒng)下支持Windows遠(yuǎn)程桌面連接的RDP客戶端程序使用的是rdesktop。Rdesktop的使用會(huì)對(duì)CPU資源造成較大的占用,而基于龍芯平臺(tái)的終端本身存在存儲(chǔ)空間小、內(nèi)存容量少、CPU處理能力不強(qiáng)的特點(diǎn),在基于龍芯平臺(tái)的機(jī)器上使用rdesktop時(shí)若占用過(guò)多的CPU資源,可能造成圖形用戶界面無(wú)法啟動(dòng)的問(wèn)題。

【發(fā)明內(nèi)容】

[0003]針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明的主要目的在于提供一種避免對(duì)CPU資源造成較大占用,以致造成無(wú)法啟動(dòng)圖形用戶界面的基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明提供一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,該方法包括如下步驟S1-S7:
[0005]S1、在基于龍芯平臺(tái)的機(jī)器上,打開(kāi)Linux操作系統(tǒng)內(nèi)核的幀緩沖支持,構(gòu)建開(kāi)發(fā)環(huán)境;
[0006]S2、將圖形處理庫(kù)DirectFB移植于該基于龍芯平臺(tái)的機(jī)器上;
[0007]S3、在Linux操作系統(tǒng)下創(chuàng)建一個(gè)標(biāo)準(zhǔn)圖形卡含有的顯示層,創(chuàng)建主表面、離屏表面以及鼠標(biāo);
[0008]S4、設(shè)置窗口的背景、大小和位置參數(shù),并基于該窗口的背景、大小和位置參數(shù)在主表面創(chuàng)建客戶端窗口;
[0009]S5、創(chuàng)建該客戶端窗口所在表面的句柄、事件緩沖區(qū)和消息緩沖區(qū),為事件緩沖區(qū)和消息緩沖區(qū)創(chuàng)建文件描述符;
[0010]S6、監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符;
[0011]S7、使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示。
[0012]進(jìn)一步地,該步驟S2將圖形處理庫(kù)DirectFB移植于該基于龍芯平臺(tái)的機(jī)器上包括如下步驟S21-S28:
[0013]S21、獲取圖形處理庫(kù)DirectFB的源碼包;
[0014]S22、搭建交叉編譯工具鏈;
[0015]S23、設(shè)置編譯安裝所需的環(huán)境變量;
[0016]S24、編譯安裝該步驟S21獲取的源碼包;
[0017]S25、將該步驟S24編譯安裝的文件制作一個(gè)新的文件系統(tǒng);
[0018]S26、將該步驟S25制作的文件系統(tǒng)燒寫(xiě)到基于龍芯平臺(tái)的機(jī)器上;
[0019]S27、運(yùn)行測(cè)試圖形處理庫(kù)DirectFB的樣例;[0020]S28、若測(cè)試穩(wěn)定通過(guò)則重啟該基于龍芯平臺(tái)的機(jī)器,再運(yùn)行測(cè)試,如果測(cè)試仍然穩(wěn)定通過(guò),那么移植完成;否則重復(fù)步驟S21?S27直至移植完成。
[0021]步驟S25制作一個(gè)新的文件系統(tǒng)具體包含如下步驟S251-S254:
[0022]S251、將交叉編譯后的圖形處理庫(kù)DirectFB放置于根文件系統(tǒng)目錄;
[0023]S252、設(shè)置圖形處理庫(kù)DirectFB程序所需的庫(kù)文件路徑;
[0024]S253、創(chuàng)建幀緩沖驅(qū)動(dòng)的設(shè)備文件;
[0025]S254、鏈接終端,得到文件系統(tǒng)的鏡像文件。
[0026]更進(jìn)一步地,該步驟S6監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符包含如下步驟S61-S66:
[0027]S61、連接客戶端與終端服務(wù)器;
[0028]S62、將消息緩沖區(qū)與事件緩沖區(qū)的文件描述符加入到監(jiān)聽(tīng)的文件描述符集合;
[0029]S63、判斷消息緩沖區(qū)是否可讀,若消息緩沖區(qū)可讀,則進(jìn)入步驟S64,否則,若消息緩沖區(qū)不可讀,則事件緩沖區(qū)可讀,進(jìn)入步驟S65 ;
[0030]S64、將消息緩沖區(qū)的消息傳遞給消息處理程序執(zhí)行,處理完畢后進(jìn)入步驟S62 ;
[0031]S65、調(diào)用本地事件處理函數(shù)處理事件緩沖區(qū)中的事件;
[0032]S66、處理完畢后判斷用戶是否請(qǐng)求退出客戶端,若是,則關(guān)閉客戶端,若否,則進(jìn)入步驟S62。
[0033]更進(jìn)一步地,步驟S7使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示包含如下步驟S71-S76:
[0034]S71、在內(nèi)存中開(kāi)辟堆棧區(qū)域;
[0035]S72、鎖住窗口的離屏表面,將離屏表面與該堆棧區(qū)域掛接,并將離屏表面設(shè)為可讀寫(xiě)方式;
[0036]S73、利用繪圖函數(shù)將需要繪制的圖像數(shù)據(jù)寫(xiě)入所述內(nèi)存中開(kāi)辟的堆棧區(qū)域;
[0037]S74、寫(xiě)入完成后釋放離屏表面;
[0038]S75、設(shè)置需要進(jìn)行內(nèi)存拷貝的剪裁區(qū);
[0039]S76、將主表面與離屏表面進(jìn)行不斷的翻轉(zhuǎn)與交換,輪流顯示主表面與離屏表面內(nèi)容,實(shí)現(xiàn)主表面和離屏表面的顯示輸出。
[0040]相對(duì)于現(xiàn)有技術(shù),首先,本發(fā)明為將rdesktop從C/S結(jié)構(gòu)的X Window中脫離出來(lái),選擇圖形處理庫(kù)DirectFB作為開(kāi)發(fā)所使用的圖形用戶界面(GUI),并將圖形處理庫(kù)DirectFB移植于基于龍芯平臺(tái)的機(jī)器,同時(shí)補(bǔ)充X Window體系下的客戶端窗口初始化、事件與消息循環(huán)的實(shí)現(xiàn)、繪圖操作與顯示的實(shí)現(xiàn)等的一些基本功能;其次,本發(fā)明從通信機(jī)制、顯示輸出和本地事件處理三個(gè)方面對(duì)rdesktop進(jìn)行優(yōu)化,使得遠(yuǎn)程桌面協(xié)議(RDP)客戶端能夠在存儲(chǔ)空間小、內(nèi)存容量少以及CPU處理能力不強(qiáng)的龍芯終端上達(dá)到最優(yōu)性能,使得界面程序運(yùn)行時(shí)間、內(nèi)存占用以及視頻播放效果有較大幅度的性能提高,避免了因使用rdesktop時(shí)占用過(guò)多的CPU資源,造成圖形用戶界面無(wú)法啟動(dòng)的問(wèn)題。
【專利附圖】

【附圖說(shuō)明】
[0041]圖1是本發(fā)明一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法實(shí)施例的流程圖[0042]圖2是本發(fā)明步驟S2將圖形處理庫(kù)DirectFB移植于所述基于龍芯平臺(tái)的機(jī)器上方法流程圖
[0043]圖3是本發(fā)明步驟S25制作一個(gè)新的文件系統(tǒng)方法流程圖
[0044]圖4是本發(fā)明步驟S6監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符方法流程圖
[0045]圖5是本發(fā)明步驟S7使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示方法流程圖【具體實(shí)施方式】
[0046]下面結(jié)合附圖,詳細(xì)說(shuō)明本發(fā)明的【具體實(shí)施方式】。 [0047]Rdesktop是一個(gè)在Unix/Linux下訪問(wèn)Windows遠(yuǎn)程桌面的客戶端程序,基于龍芯終端存儲(chǔ)空間小、內(nèi)存容量少以及CPU處理能力不強(qiáng)的特點(diǎn),應(yīng)放棄使用“大而全”的圖形用戶界面,因此本發(fā)明基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法實(shí)施例在基于龍芯平臺(tái)的機(jī)器上對(duì)Linux下的RDP客戶端rdesktop進(jìn)行適當(dāng)?shù)男薷?、裁?把rdesktopX層中的調(diào)用X Windows的繪圖函數(shù)用圖形處理庫(kù)DirectFB中的繪圖函數(shù)替換)和優(yōu)化,使得RDP客戶端在基于龍芯平臺(tái)的機(jī)器上達(dá)到最理想的性能目標(biāo)。
[0048]如圖1所示,是本發(fā)明一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法一個(gè)實(shí)施例的流程圖,該優(yōu)化方法的實(shí)施例包含如下步驟S1-S7:
[0049]S1、在基于龍芯平臺(tái)的機(jī)器上,打開(kāi)Linux操作系統(tǒng)內(nèi)核的幀緩沖(FrameBuffer)支持,構(gòu)建開(kāi)發(fā)環(huán)境。該基于龍芯平臺(tái)的機(jī)器指龍芯2H機(jī)器,即集成了 CPU,圖形處理器,以及北橋和南橋芯片的龍芯2H開(kāi)發(fā)板;另外,幀緩沖(Frame Buffer)是出現(xiàn)在
2.2.XX內(nèi)核當(dāng)中的一種驅(qū)動(dòng)程序接口,這種接口將顯示設(shè)備抽象為幀緩沖區(qū),可以看成是顯示內(nèi)存的一個(gè)映像,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫(xiě)操作,而讀寫(xiě)操作可以立即反應(yīng)在屏幕上,該驅(qū)動(dòng)程序的設(shè)備文件一般是/dev/fb0、/dev/fbl等;
[0050]S2、將圖形處理庫(kù)DirectFB移植于該基于龍芯平臺(tái)的機(jī)器上。其中圖形處理庫(kù)DirectFB是一個(gè)針對(duì)嵌入式系統(tǒng)設(shè)計(jì)的圖形庫(kù),運(yùn)行在提供幀緩沖(Frame Buffer)支持的Linux操作系統(tǒng)中,能在盡可能少的資源使用上提供最大的硬件加速性能,以增強(qiáng)嵌入式系統(tǒng)的圖形功能;DirectFB是一個(gè)完整的硬件抽象層,支持基于Linux幀緩沖(FrameBuffer)實(shí)現(xiàn)的半透明的窗口和多層顯示技術(shù),提供硬件圖形加速繪制和輸入處理等功能。
[0051]S3、在Linux操作系統(tǒng)下創(chuàng)建一個(gè)標(biāo)準(zhǔn)圖形卡含有的顯示層,創(chuàng)建主表面、離屏表面以及鼠標(biāo),其中被當(dāng)前屏幕顯示的表面稱為主表面,不被當(dāng)前屏幕顯示的表面稱為離屏表面;
[0052]S4、設(shè)置窗口的背景、大小和位置參數(shù),并基于該窗口的背景、大小和位置參數(shù)在該主表面創(chuàng)建客戶端窗口。具體方法為:設(shè)置窗口的背景、大小和位置參數(shù);將這些參數(shù)填入window_desc變量,window_desc變量中,除了窗口的背景、大小和位置參數(shù)外,還包括父窗口的ID, flags (字段確認(rèn))、顏色空間、表面的ID、像素格式等等參數(shù)^#window_desc變量作為創(chuàng)建客戶端窗口與客戶端窗口背景的參數(shù),生成客戶端窗口。優(yōu)選的,使用256色作為開(kāi)發(fā)使用的顏色深度,將客戶端窗口與客戶端窗口背景的像素格式設(shè)置為DSPF_LUT8,以便客戶端窗口與客戶端窗口背景能正常顯示,另外,在window_desc變量中使用flags(字段確認(rèn))來(lái)表示需要關(guān)注的參數(shù)。[0053]S5、創(chuàng)建該客戶端窗口所在表面的句柄、事件緩沖區(qū)和消息緩沖區(qū),為事件緩沖區(qū)和消息緩沖區(qū)創(chuàng)建文件描述符。創(chuàng)建的句柄用于客戶端窗口主表面和離屏表面兩個(gè)緩沖表面的翻轉(zhuǎn),這兩個(gè)緩沖表面,其中一個(gè)是主表面(primary surface),它是顯示內(nèi)存的一部分,另外一個(gè)稱為離屏表面(off screen surface),它是內(nèi)存中的一段區(qū)域用來(lái)保存需要被緩存的圖像,它的內(nèi)容永遠(yuǎn)都不會(huì)被顯示,翻轉(zhuǎn)是通過(guò)flip函數(shù)實(shí)現(xiàn)的;事件緩沖區(qū)用于存儲(chǔ)客戶端窗口接收到的本地事件,接收到的本地事件將會(huì)傳送至應(yīng)用程序進(jìn)行處理;而消息緩沖區(qū)的文件描述符則用于在消息處理中被select函數(shù)不斷的進(jìn)行檢測(cè)并向應(yīng)用程序通知事件的到來(lái)。
[0054]S6、監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符,即將所有消息緩沖區(qū)的文件描述符都加入監(jiān)聽(tīng)對(duì)象,以滿足客戶端對(duì)多個(gè)窗口的消息緩沖區(qū)進(jìn)行監(jiān)聽(tīng),其中處理RDP消息與本地事件均采用I/O復(fù)用模型。優(yōu)選的該步驟的具體實(shí)現(xiàn)方法為:當(dāng)RDP客戶端做好初始化工作并成功和終端服務(wù)器初步連接上以后,客戶端的程序流程就進(jìn)入了一個(gè)while函數(shù)循環(huán),這個(gè)循環(huán)不斷的取得消息或事件,然后依靠select函數(shù)判斷是消息還是事件并交給相應(yīng)的處理程序,直到用戶關(guān)閉這個(gè)客戶端后循環(huán)才退出。
[0055]S7、使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示。使用雙緩沖技術(shù)可以很好地解決繪圖中屏幕閃爍的問(wèn)題,并提高繪圖輸出的效率。利用圖形處理庫(kù)DirectFB,雙緩沖技術(shù)可以用主表面和離屏表面的翻轉(zhuǎn)(Flip)來(lái)實(shí)現(xiàn),即利用Flip函數(shù)把主表面與離屏表面進(jìn)行不斷的翻轉(zhuǎn)與交換,輪流顯示主表面與離屏表面內(nèi)容。由于利用Flip函數(shù)進(jìn)行翻轉(zhuǎn)的方式只是改變表面的指針而沒(méi)有改變其中的內(nèi)容,所以在內(nèi)存拷貝方式上速度更快。
[0056]如圖2所示,步驟S2將圖形處理庫(kù)DirectFB移植于該基于龍芯平臺(tái)的機(jī)器上具體包括如下步驟S21-S28:
[0057]S21、獲取圖形處理庫(kù)DirectFB的源碼包。源碼包包括了 zlib_l.2.5.tar.bz2λ freetype 2.3.5.tar.bz2、Iibpng-1.2.40.tar.bz2、jpegsrc.v6b.tar.gz、DirectFB-L 3.0.tar.gz 和 DirectFB-examples-L 2.0.tar.gz ;
[0058]S22、搭建交叉編譯工具鏈。具體方法為:將龍芯平臺(tái)標(biāo)準(zhǔn)的交叉編譯的工具鏈gcc-3.4.6.tgz解壓到/opt目錄下,然后設(shè)置交叉編譯工具鏈的環(huán)境變量。在Iinux系統(tǒng)下/opt目錄一般用來(lái)存放給主機(jī)額外安裝軟件所擺放的目錄,一般來(lái)放一些測(cè)試的軟件,方便調(diào)試、刪除;
[0059]S23、設(shè)置編譯安裝所需的環(huán)境變量。具體方法為:(I)創(chuàng)建安裝目錄;(2)設(shè)置安裝路徑、庫(kù)文件路徑和頭文件路徑;(3)設(shè)置配置信息文件路徑;
[0060]S24、編譯安裝步驟S21獲取的源碼包。即編譯安裝zlib-1.2.5,freetype 2.3.5、libpng-1.2.40、jpegsrc.v6b> DirectFB-1.3.0 和 DirectFB-examples-1.2.0 ;
[0061]S25、將步驟S24編譯安裝的文件制作一個(gè)新的文件系統(tǒng)。如圖3所示,步驟S25制作一個(gè)新的文件系統(tǒng)具體包含如下步驟S251-S254:S251、進(jìn)入根文件系統(tǒng)ramdisk中,將交叉編譯后的圖形處理庫(kù)DirectFB放置于根文件系統(tǒng)目錄ramdisk ;S252、設(shè)置圖形處理庫(kù)DirectFB程序所需的庫(kù)文件路徑;S253、創(chuàng)建巾貞緩沖(frame buffer)驅(qū)動(dòng)的設(shè)備文件;
S254、鏈接終端,得到文件系統(tǒng)的鏡像文件ramdisk-cramfs.1mg。
[0062]S26、將該步驟S25制作的文件系統(tǒng)燒寫(xiě)到基于龍芯平臺(tái)的機(jī)器上。具體方法為:
(I)給龍芯2H機(jī)器上電;(2)設(shè)置啟動(dòng)參數(shù),通過(guò)啟動(dòng)參數(shù)設(shè)置龍芯2H機(jī)器的文件系統(tǒng)存放的位置,文件系統(tǒng)的類型(如cramfs、yaffs等),顯卡的分辨率等等,啟動(dòng)參數(shù)舉例如gconsole = tty root = /dev/sdal rootfs = yaffs video = sm501fb: 1280*800-24060,通過(guò)tftp把文件系統(tǒng)鏡像文件ramdisk-cramfs.1mg燒寫(xiě)到龍芯的disk分區(qū)上;(3)完成后輸入命令reboot重啟龍芯2H機(jī)器;
[0063]S27、進(jìn)入龍芯2H機(jī)器的文件系統(tǒng)運(yùn)行測(cè)試圖形處理庫(kù)DirectFB的樣例;
[0064]S28、若測(cè)試穩(wěn)定通過(guò)則重啟該基于龍芯平臺(tái)的機(jī)器(龍芯2H機(jī)器),再運(yùn)行測(cè)試,如果測(cè)試仍然穩(wěn)定通過(guò),那么移植完成;否則重復(fù)步驟S21?S27直至移植完成。
[0065]如圖4所示,該步驟S6監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符包含如下步驟 S61-S66:
[0066]S61、連接客戶端與終端服務(wù)器;
[0067]S62、將消息緩沖區(qū)與事件緩沖區(qū)的文件描述符加入到select函數(shù)監(jiān)聽(tīng)的文件描述符集合;
[0068]S63、當(dāng)select函數(shù)監(jiān)聽(tīng)到緩沖區(qū)有新內(nèi)容時(shí),select函數(shù)會(huì)返回一個(gè)大于O的值,這個(gè)值表示有多少個(gè)緩沖區(qū)有新內(nèi)容;然后利用FD_ISSET宏判斷一個(gè)文件描述符是否處在有新內(nèi)容到來(lái)的文件描述符集合中;若監(jiān)聽(tīng)到有緩沖區(qū)可讀,判斷RDP消息緩沖區(qū)是否可讀,若消息緩沖區(qū)可讀,則進(jìn)入步驟S64,否則,若消息緩沖區(qū)不可讀,則說(shuō)明事件緩沖區(qū)可讀,進(jìn)入步驟S65 ;
[0069]S64、將消息緩沖區(qū)的消息傳遞給while函數(shù)循環(huán)外的消息處理程序執(zhí)行,處理完畢后進(jìn)入步驟S62 ;
[0070]S65、調(diào)用本地事件處理函數(shù)DFB_process_Events處理事件緩沖區(qū)中的事件;
[0071]S66、處理完畢后判斷用戶是否請(qǐng)求退出客戶端,若是,則關(guān)閉客戶端,若否,則進(jìn)入步驟S62。
[0072]如圖5所示,步驟S7使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示,優(yōu)選的該步驟使用Lock函數(shù)對(duì)主表面和離屏表面的數(shù)據(jù)進(jìn)行讀寫(xiě)=Lock函數(shù)需要以下四個(gè)參數(shù):(1)指向需要Lock表面的指針thiz ; (2) 一個(gè)標(biāo)識(shí)說(shuō)明Lock的方式,是可讀、可寫(xiě)還是兩者皆可;(3)一段指向用來(lái)與表面掛接的內(nèi)存的指針ret_ptr,程序中使用指向BS的指針作為實(shí)際參數(shù),BS是為了實(shí)現(xiàn)雙緩沖而在內(nèi)存中開(kāi)辟的堆棧區(qū)域;(4)ret_pitCh表示表面的位平面,因采用256色的顯示方式,所以ret_pitCh的值設(shè)為8。使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示包含如下步驟S71-S76:
[0073]S71、在內(nèi)存中開(kāi)辟堆棧區(qū)域;
[0074]S72、當(dāng)需要進(jìn)行繪圖操作時(shí),應(yīng)用程序鎖住(Lock)窗口的離屏表面,將離屏表面與所述堆棧區(qū)域掛接,并將離屏表面設(shè)為可讀寫(xiě)方式;
[0075]S73、利用繪圖函數(shù)將需要繪制的圖像數(shù)據(jù)寫(xiě)入所述內(nèi)存中開(kāi)辟的堆棧區(qū)域。因?yàn)閮?nèi)存中開(kāi)辟的堆棧區(qū)域與離屏表面掛接,所以對(duì)內(nèi)存中開(kāi)辟的堆棧區(qū)域的寫(xiě)入也就是對(duì)離屏表面的寫(xiě)入,這時(shí)的寫(xiě)入是按目標(biāo)區(qū)域的像素排列進(jìn)行,對(duì)區(qū)域中的每個(gè)像素賦值;
[0076]S74、寫(xiě)入完成后釋放(Unlock)離屏表面;
[0077]S75、使用set_region函數(shù)設(shè)置需要進(jìn)行內(nèi)存拷貝的剪裁區(qū)(Clip);
[0078]S76、調(diào)用flip函數(shù)將主表面與離屏表面進(jìn)行不斷的翻轉(zhuǎn)與交換,輪流顯示主表面與離屏表面內(nèi)容,實(shí)現(xiàn)主表面和離屏表面的顯示輸出。[0079]以u(píng)i_screenblt函數(shù)為例,它的功能是把窗口上的一塊矩形區(qū)域拷貝到另一地方,所以程序首先應(yīng)該設(shè)置一個(gè)臨時(shí)的內(nèi)存區(qū)域temp來(lái)儲(chǔ)存源矩形區(qū)域,然后將temp中的內(nèi)容拷貝到目標(biāo)矩形區(qū)域中。這里對(duì)目標(biāo)矩形區(qū)域的讀寫(xiě)操作是使用get_piXel與set_pixel函數(shù),這兩個(gè)函數(shù)分別可以完成對(duì)內(nèi)存中開(kāi)辟的堆棧區(qū)域在指定位置上的像素值的讀和寫(xiě)。
[0080]以上介紹了一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法。本發(fā)明并不限定于以上實(shí)施例,任何未脫離本發(fā)明技術(shù)方案,即僅僅對(duì)其進(jìn)行本領(lǐng)域普通技術(shù)人員所知悉的改進(jìn)或變更,均屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,所述方法包括如下步驟: S1、在基于龍芯平臺(tái)的機(jī)器上,打開(kāi)Linux操作系統(tǒng)內(nèi)核的幀緩沖支持,構(gòu)建開(kāi)發(fā)環(huán)境; S2、將圖形處理庫(kù)DirectFB移植于所述基于龍芯平臺(tái)的機(jī)器上; S3、在Linux操作系統(tǒng)下創(chuàng)建一個(gè)標(biāo)準(zhǔn)圖形卡含有的顯示層,創(chuàng)建主表面、離屏表面以及鼠標(biāo); S4、設(shè)置窗口的背景、大小和位置參數(shù),并基于所述窗口的背景、大小和位置參數(shù)在所述主表面創(chuàng)建客戶端窗口; S5、創(chuàng)建所述客戶端窗口所在表面的句柄、事件緩沖區(qū)和消息緩沖區(qū),為所述事件緩沖區(qū)和消息緩沖區(qū)創(chuàng)建文件描述符; S6、監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符; S7、使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示。
2.根據(jù)權(quán)利要求1所述的基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,其特征在于,所述步驟S2將圖形處理庫(kù)DirectFB移植于所述基于龍芯平臺(tái)的機(jī)器上包括如下步驟: S21、獲取圖形處理庫(kù)DirectFB的源碼包; S22、搭建交叉編譯工具鏈; S23、設(shè)置編譯安裝所需的環(huán)境變量; S24、編譯安裝所述步驟S21獲取的源碼包; S25、將所述步驟S24編譯安裝的文件制作一個(gè)新的文件系統(tǒng); S26、將所述步驟S25制作的文件系統(tǒng)燒寫(xiě)到基于龍芯平臺(tái)的機(jī)器上; S27、運(yùn)行測(cè)試圖形處理庫(kù)DirectFB的樣例; S28、若測(cè)試穩(wěn)定通過(guò)則重啟所述基于龍芯平臺(tái)的機(jī)器,再運(yùn)行測(cè)試,如果測(cè)試仍然穩(wěn)定通過(guò),那么移植完成;否則重復(fù)步驟S21~S27直至移植完成。
3.根據(jù)權(quán)利要求2所述的基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,其特征在于,所述步驟S25制作一個(gè)新的文件系統(tǒng)具體包含如下步驟: S251、將交叉編譯后的圖形處理庫(kù)DirectFB放置于根文件系統(tǒng)目錄; S252、設(shè)置圖形處理庫(kù)DirectFB程序所需的庫(kù)文件路徑; S253、創(chuàng)建幀緩沖驅(qū)動(dòng)的設(shè)備文件; S254、鏈接終端,得到文件系統(tǒng)的鏡像文件。
4.根據(jù)權(quán)利要求1所述的基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,其特征在于,所述步驟S6監(jiān)聽(tīng)所有消息緩沖區(qū)和事件緩沖區(qū)的文件描述符包含如下步驟: S 61、連接客戶端與終端服務(wù)器; S62、將消息緩沖區(qū)與事件緩沖區(qū)的文件描述符加入到監(jiān)聽(tīng)的文件描述符集合; S63、判斷消息緩沖區(qū)是否可讀,若消息緩沖區(qū)可讀,則進(jìn)入步驟S64,否則,若消息緩沖區(qū)不可讀,則事件緩沖區(qū)可讀,進(jìn)入步驟S65 ; S64、將消息緩沖區(qū)的消息傳遞給消息處理程序執(zhí)行,處理完畢后進(jìn)入步驟S62; S65、調(diào)用本地事件處理函數(shù)處理事件緩沖區(qū)中的事件;`S66、處理完畢后判斷用戶是否請(qǐng)求退出客戶端,若是,則關(guān)閉客戶端,若否,則進(jìn)入步驟 S62。
5.根據(jù)權(quán)利要求1所述的基于龍芯平臺(tái)Linux操作系統(tǒng)下rdesktop的優(yōu)化方法,其特征在于,所述步驟S7使用雙緩沖技術(shù)實(shí)現(xiàn)繪圖操作和顯示包含如下步驟: ` 571、在內(nèi)存中開(kāi)辟堆棧區(qū)域; `572、鎖住窗口的離屏表面,將離屏表面與所述堆棧區(qū)域掛接,并將離屏表面設(shè)為可讀寫(xiě)方式; `573、利用繪圖函數(shù)將需要繪制的圖像數(shù)據(jù)寫(xiě)入所述內(nèi)存中開(kāi)辟的堆棧區(qū)域; ` 574、與入完成后釋放尚屏表面; `575、設(shè)置需要進(jìn)行內(nèi)存拷貝的剪裁區(qū); `576、將主表面與離屏表面進(jìn)行不斷的翻轉(zhuǎn)與交換,輪流顯示主表面與離屏表面內(nèi)容,實(shí)現(xiàn)主表面和離屏表面的顯示輸出。
【文檔編號(hào)】G06F9/50GK103677792SQ201310236467
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年6月15日 優(yōu)先權(quán)日:2013年6月15日
【發(fā)明者】楊涌, 張戈, 蘇丹, 王湘, 林小光 申請(qǐng)人:重慶綠色智能技術(shù)研究院
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新余市| 文安县| 三明市| 托克托县| 靖边县| 宁阳县| 德昌县| 安陆市| 雷山县| 建始县| 彝良县| 灌南县| 榆社县| 荣昌县| 呼伦贝尔市| 西峡县| 宁城县| 九台市| 怀化市| 靖西县| 盘山县| 闽清县| 界首市| 淄博市| 崇义县| 阳谷县| 怀远县| 长春市| 铜梁县| 宣化县| 麻江县| 万宁市| 长武县| 怀宁县| 秭归县| 大石桥市| 邳州市| 绥化市| 霍林郭勒市| 上林县| 陕西省|