非常感謝作者!你的文檔幫助了我完成了作業(yè)。
我是在Android Q上參考的,在具體的對(duì)照中,發(fā)現(xiàn)有不太準(zhǔn)確的地方。
BufferSlot mSlots[NUM_BUFFER_SLOTS] 這個(gè)不是和窗口數(shù)目對(duì)應(yīng)的,由于一個(gè)Surface對(duì)應(yīng)一個(gè)窗口,Surface的內(nèi)部變量不會(huì)和窗口總數(shù)對(duì)應(yīng)。這個(gè)應(yīng)該是指,同一個(gè)窗口中有NUM_BUFFER_SLOTS子buffer同時(shí)進(jìn)行顯示刷新,是窗口內(nèi)部的組成部分。親測(cè)可以創(chuàng)建80個(gè)以上的窗口。
然后Surface內(nèi)部的frontbuffer和backbuffer,Q上已經(jīng)改名為
sp<GraphicBuffer> mLockedBuffer;
sp<GraphicBuffer> mPostedBuffer;
也不是傳統(tǒng)上理解上的2緩沖,3緩沖,3緩沖是驅(qū)動(dòng)面向屏幕的,代碼一般看不到。
Android圖形系統(tǒng)(八)-app與SurfaceFlinger共享UI元數(shù)據(jù)過程Android應(yīng)用程序與SurfaceFlinger服務(wù)是運(yùn)行在不同的進(jìn)程中的,因此,它們采用Binder進(jìn)程間通信機(jī)制來進(jìn)行通信。 但是我們知道一個(gè)Android應(yīng)用程序可...