SurfaceFlinger与Surface概述
?
基本原理:
SF一個Client對應一個app中的SurfaceComposerClient, 分別是Binder的n端和b端,主要用來CreateSurface
一個app中有多個Activity,一個Activity一般有一個Surface(除SurfaceView,一個View就有一個Surface),這個Acitivity所有View都是畫在這個Surface上的。
App中的每個Surface對應SF中的每個Layer,因為SF為App創建Surface的時候,同時在SF端創建一個Layer。
Layer里面有個一個BufferQueue,對應Surface中的一個mGraphicBufferProducer,分別是Binder中的n端和b端。主要方法是dequeueBuffer和queueBuffer,當app需要在surface上畫圖時,dequeueBuffer申請一個緩存,寫入,然后queueBuffer送出緩存并且通知SF來合成。
可以注意到,QueueBuffer和Surface都有一個BufferSlot數組,里面Buffer順序是同步的,兩個數組對應每一個元素指向同一個數據,這個數據也就是GraphicBuffer,應為這兩個數組各自在兩個進程中,所以這里是通過內存共享來實現。
轉載于:https://www.cnblogs.com/hushpa/p/6530905.html
總結
以上是生活随笔為你收集整理的SurfaceFlinger与Surface概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone 卸载应用后储存空间没有增加
- 下一篇: iPhone 连接电脑后,点击“信任”没