<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 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。 [![image](https://box.kancloud.cn/2016-05-05_572b1a2c37366.gif "image") ](http://hi.csdn.net/attachment/201006/14/0_1276524101W877.gif) [![image](https://box.kancloud.cn/2016-05-05_572b1a2c47a27.gif "image") ](http://hi.csdn.net/attachment/201006/14/0_1276524104Q1xk.gif) ### 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但是不分配顯示內存。 [![image](https://box.kancloud.cn/2016-05-05_572b1a2c660ae.gif "image") ](http://hi.csdn.net/attachment/201006/14/0_1276524110bgH4.gif)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看