读书人

Android创造Surface过程源码分析

发布时间: 2013-10-08 17:12:09 作者: rapoo

Android创建Surface过程源码分析

在上一篇文章Android SurfaceFlinger服务代理对象获取过程源码分析中介绍了应用程序获取SurfaceFlinger中的各种远程Binder代理对象,SurfaceFlinger为每个应用程序创建Client对象来处理应用程序的Binder请求,同时返回Client的Binder代理对象给应用程序,这样应用程序就可以通过该Binder代理对象来请求SurfaceFlinger创建Surface了,本文在前面章节的基础上 分析Surface的创建过程。

Android创造Surface过程源码分析


由于ISurfaceComposerClient也是基于Binder通信框架的,因此BpSurfaceComposerClient向服务端的Client请求创建Surface的过程分为客户端进程和服务端进程。

客户端进程:

frameworks\native\libs\gui\ISurfaceComposerClient.cpp


这里就是为当前创建的Layer构造并初始化SurfaceTexture对象,该SurfaceTexture对象用来管理BufferQueue。回到SurfaceFlinger的创建 普通Surface函数createNormalSurface,构造完Layer对象后,还需根据图像大小,格式来设置Layer对象中的buffer

完成Layer对象的创建及设置后,调用当前创建的Layer对象的getSurface()函数来创建一个BSurface对象,getSurface()函数实现在Layer的父类LayerBaseClient中


读书人网 >Android

热点推荐