理解ICS Surface和SurfaceFlinger的处理流程

首先看下ISurfaceComposer接口

ISurfaceComposer定义了基础接口,供客户端和Server端交互使用。

ISurfaceComposer接口的派生类图示:

------------------------------------------------------------------

接口ISurfaceComposerClient

->
BnSurfaceComposerClient
->
实现类Client,位于SurfaceFlinger.h文件中

------------------------------------------------------------------
接口ISurfaceComposer
->
BnSurfaceComposer一个ISurfaceComposer接口的派生类,提供Client端调用Server功能的接口
->
实现类SurfaceFlinger

ISurfaceComposer类含有以下成员函数,用于与SurfaceFlinger建立联系
    /* create connection with surface flinger, requires
     * ACCESS_SURFACE_FLINGER permission
     */
    virtual sp<ISurfaceComposerClient> createConnection() = 0;

------------------------------------------------------------------
1.SurfaceComposerClient类含有接口ISurfaceComposerClient类型的成员变量mClient

2.SurfaceControl类含有SurfaceComposerClient类型的成员变量mClient

3.SurfaceComposerClient::createSurface函数,返回值类型为SurfaceControl
(1)调用成员mClient的createSurface函数创建Surface
mClient->createSurface实际是调用的接口ISurfaceComposerClient的实现类Client
(2)创建SurfaceControl对象,管理(1)中创建的Surface
(3)返回(2)中创建的SurfaceControl对象

4.SurfaceComposerClient对象的创建
创建SurfaceComposerClient对象的地方位于jni中,对应的文件是android_view_Surface.cpp,函数是SurfaceSession_init,
对应与java类SurfaceSession中的init函数。

{"init",     "()V",  (void*)SurfaceSession_init },


未完待续……


发布了270 篇原创文章 · 获赞 274 · 访问量 377万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览