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之动态结构示相关推荐
- Android核心分析之二十三Andoird GDI之基本原理及其总体框架
Android GDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了.但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理. GDI主 ...
- [转]Android核心分析之二:方法论探讨之概念空间篇
我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用.各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方式的概念空间,再使用工具 ...
- Android核心分析之二十二Android应用框架之Activity
3 Activity设计框架 3.1 外特性空间的Activity 我们先来看看,android应用开发人员接触的外特性空间中的Activity,对于AMS来讲,这个Activity就是客服端的 ...
- Android手机开发总结——Android核心分析
导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...
- Android核心分析
导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...
- CSDN移动博文集锦之Android核心分析 (Z)
导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. 文章皆来自CSDN网友maxleng的专栏,maxle ...
- (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先 ...
- 冷冰:Android核心分析系列
1. 方法论探讨之设计意图 2. 方法论探讨之概念空间篇 3. 手机之硬件形态 4. 手机的软件形态 5. Android基本空间划分 6. IPC框架分析(Binder,Service,Servic ...
- Android 核心分析 之七------Service深入分析
http://blog.csdn.net/maxleng/article/details/5504485 Service深入分析 上一章我们分析了Android IPC架构,知道了Android服务构 ...
最新文章
- 魔改ResNet反超Transformer再掀架构之争!作者说“没一处是创新”,这些优化trick值得学...
- windows平台 python生成 pyd文件
- 广东计算机电子学校,广东省电子职业技术学校
- Worktile 移动团队如何使用 C++ 完成 Worktile Pro 跨平台应用开发2
- xhell启动mysql_xshell怎么搭建mysql
- HDU 1240 Asteroids!(DFS简单搜索)
- eclipse最有用快捷键整理
- 在线人民币数字金额转成美元金额大写工具
- 免费好用的图片压缩网站,有这五个就够了(收藏备用)
- web前端开发期末大作业 ——个人主页(可自取源码)
- 字体变形html,SVG文字变形动画特效
- mac免费的虚拟机怎么安装?VMware虚拟机免费获取教程
- STL容器底层数据结构
- linux下查找配置文件
- 网易2019游戏研发工程师笔试题
- 使用cmake搭建一个跨平台游戏服务器
- 商家分账使用场景流程
- 《Linux驱动:网络设备驱动》
- 深度学习:自编码进行模式分类
- 使用Hashcat破解Windows系统账号密码
热门文章
- linux处理机调度实验报告,模拟Linux操作系统下处理机调度实验报告
- java弹出虚拟键盘_JS实现电脑虚拟键盘的操作
- vscode 配置 pcl头文件库
- android jni示例_Android服务示例
- 在网络中配置思科交换机
- unity game和scene效果不一样_KTV装修设计:如何让消费者体验到不一样的KTV娱乐效果...
- uva 701——The Archeologists\' Dilemma
- 为什么不能在子类的初始化列表里初始化父类的成员
- C语言的细小知识点整理
- linux网络编程之多路I/O转接服务器poll函数