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之动态结构示相关推荐

  1. Android核心分析之二十三Andoird GDI之基本原理及其总体框架

     Android GDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了.但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理. GDI主 ...

  2. [转]Android核心分析之二:方法论探讨之概念空间篇

    我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用.各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方式的概念空间,再使用工具 ...

  3. Android核心分析之二十二Android应用框架之Activity

    3 Activity设计框架 3.1 外特性空间的Activity    我们先来看看,android应用开发人员接触的外特性空间中的Activity,对于AMS来讲,这个Activity就是客服端的 ...

  4. Android手机开发总结——Android核心分析

    导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...

  5. Android核心分析

    导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...

  6. CSDN移动博文集锦之Android核心分析 (Z)

    导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. 文章皆来自CSDN网友maxleng的专栏,maxle ...

  7. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结

    Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先 ...

  8. 冷冰:Android核心分析系列

    1. 方法论探讨之设计意图 2. 方法论探讨之概念空间篇 3. 手机之硬件形态 4. 手机的软件形态 5. Android基本空间划分 6. IPC框架分析(Binder,Service,Servic ...

  9. Android 核心分析 之七------Service深入分析

    http://blog.csdn.net/maxleng/article/details/5504485 Service深入分析 上一章我们分析了Android IPC架构,知道了Android服务构 ...

最新文章

  1. 魔改ResNet反超Transformer再掀架构之争!作者说“没一处是创新”,这些优化trick值得学...
  2. windows平台 python生成 pyd文件
  3. 广东计算机电子学校,广东省电子职业技术学校
  4. Worktile 移动团队如何使用 C++ 完成 Worktile Pro 跨平台应用开发2
  5. xhell启动mysql_xshell怎么搭建mysql
  6. HDU 1240 Asteroids!(DFS简单搜索)
  7. eclipse最有用快捷键整理
  8. 在线人民币数字金额转成美元金额大写工具
  9. 免费好用的图片压缩网站,有这五个就够了(收藏备用)
  10. web前端开发期末大作业 ——个人主页(可自取源码)
  11. 字体变形html,SVG文字变形动画特效
  12. mac免费的虚拟机怎么安装?VMware虚拟机免费获取教程
  13. STL容器底层数据结构
  14. linux下查找配置文件
  15. 网易2019游戏研发工程师笔试题
  16. 使用cmake搭建一个跨平台游戏服务器
  17. 商家分账使用场景流程
  18. 《Linux驱动:网络设备驱动》
  19. 深度学习:自编码进行模式分类
  20. 使用Hashcat破解Windows系统账号密码

热门文章

  1. linux处理机调度实验报告,模拟Linux操作系统下处理机调度实验报告
  2. java弹出虚拟键盘_JS实现电脑虚拟键盘的操作
  3. vscode 配置 pcl头文件库
  4. android jni示例_Android服务示例
  5. 在网络中配置思科交换机
  6. unity game和scene效果不一样_KTV装修设计:如何让消费者体验到不一样的KTV娱乐效果...
  7. uva 701——The Archeologists\' Dilemma
  8. 为什么不能在子类的初始化列表里初始化父类的成员
  9. C语言的细小知识点整理
  10. linux网络编程之多路I/O转接服务器poll函数