日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示

發布時間:2023/11/30 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? SurfaceFlinger對象建立過程示意
  1 SurfaceSession的建立
  客戶端請求建立Surface時,首先在要與SurfaceFlinger建立一個Session,然后再Session上建立一個Connection通過概念返回Bclient對象。WindowManagerService在添加第一個窗口前會檢查SurfaceSession是否建立,如何沒有建立,將會新建立一個實例來代表與SurfaceFlinger的一個連接。
  new SurfaceSession()@windowAddedLocked() @WindowManagerService.java。
  SurfaceSession的建立過程大部分是在C++ Native空間中完成的,表現在SurfaceSession的初始化函數:init()本地函數上。從下面的初始化函數可以看到:
  Init()<->SurfaceSession_init@android_view_Surface.cpp
  new SurfaceComposerClient
  SurfaceSession在C++Native空間建立一個SurfaceComposerClient實例。而該實例的建立實現了如下的與SurfaceFlinger通訊基礎:
  (1)建立了代理SurfaceFlinger服務的代理服務端
  (2)建立了IsurfaceFlingerClient連接,在SurfaceFlinger端建立了對應的Client,并將BClient返回給WindowManagerService。
???????????????????????

asd.jpg (10 KB, 下載次數: 0)

下載附件 ?保存到相冊

2012-3-22 12:59 上傳


?????????????????????????

qwe.jpg (46.71 KB, 下載次數: 0)

下載附件 ?保存到相冊

2012-3-22 12:59 上傳


  2 Surface的建立
  在WindowManagerService中WindowState類中,我們知道每個主窗口子啊需要是都需要建立一個Surface與之對應。win.createSurfaceLocked()@relayoutWindow
  Surface.java
  Init()< -- >Surface_init(…。,session,pid,dpy,w,h,format)@android_view_Surface.cpp
  SurfaceControl surface(client->createSurface
  在mClient的連接上:建立ISurface接口:
  M_Client->greateSurface(…)@
  Bclient ::createSurface(mId…)@SurfaceFlinger.cpp
  mFlinger->createSurface(clientid…。)
  createNormalSurfaceLocked
  *createNormalSurfaceLocked:建立一個Layer分配顯示內存
  *createPushBuffersSurfaceLocked:建立一個LayBuffer但是不分配顯示內存。
???????????????????????????

qrt.jpg (90.01 KB, 下載次數: 0)

下載附件 ?保存到相冊

2012-3-22 13:00 上傳



轉載于:https://www.cnblogs.com/kingshow123/p/androidcore27.html

總結

以上是生活随笔為你收集整理的Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。