5.5 surfaceflinger对vsync的处理
buffer状态图画得不错:
http://ju.outofmemory.cn/entry/146313

android设备可能连有多个显示器,APP也有多个surface对应各个layer

显示器可能断开或者连接,layer可能内容更新、属性变化等,因此我们的SurfaceFlinger应该能处理各种各样的情况

SurfaceFlinger.h中有个结构体State及两个该结构体变量mDrawingState(正在使用或者上次使用的状态),mCurrentState(当前的或者被修改的状态)

通过比较mDrawingState和mCurrentState变量的layersSortedByz成员可知layer的增减,比较displays可知Display的增减(显示器的连接和断开)

layer.h中有个结构体State及两个该结构体变量mDrawingState(正在使用或者上次使用的状态),mCurrentState(当前的或者被修改的状态)

通过比较mDrawingState和mCurrentState变量的sequence成员可知layer属性是否发生变化,成员layerStack的值与SurfaceFlinger.h中的State结构体中的DisplayDeviceState结构体的layerStack相同,则layer显示在对应的display上

SurfaceFlinger收到Vsync消息后处理函数如下:

5.6 基础知识_Region及操作
Android Region代码分析 
http://blog.csdn.net/fuyajun01/article/details/25551717

5.7 rebuildLayerStacks源码分析
按z轴值从大到小计算各个layer的可视区域、被遮盖区域, 并把脏区域、不透明区域汇总记入display中

5.8 DisplayDevice创建流程分析

5.9 使用opengl进行界面合成流程速览

5.10 hdmi

最新文章

  1. table隔行变色
  2. Lintcode 469. 等价二叉树
  3. centos 6.5 升级内核 linux 3.12.17 (笔记 实测)
  4. 浅谈Oracle表之间各种连接
  5. 【07_226】Invert Binary Tree
  6. [数据结构与算法]栈Stack的多种实现
  7. C++的vector学习abc
  8. JavaScript高级 函数表达式 《JavaScript高级程序设计(第三版)》
  9. 将Xml字符串转换成(DataTable || DataSet || XML)对象
  10. 逐渐深入地理解Ajax
  11. Win7 扩容磁盘分区
  12. CodeForces 160D - Distance in Tree 树型DP
  13. iOS_11_tableViewCell使用alertView变更数据
  14. linux下利用curl监控web应用状态
  15. 实现Windows程序的更新
  16. X86给龙芯笔记本编译本地工具链(未完待续)
  17. NUMA导致的Oracle性能问题
  18. 使用PHPExcel将数据导出至Excel
  19. 剑指offer--5.用两个栈实现队列
  20. SqlServer查询中使用事务

热门文章

  1. 【Codeforces Round #460 (Div. 2) D】Substring
  2. [React] Validate Custom React Component Props with PropTypes
  3. SSH无password登陆配置
  4. Split Shape by Plane in OpenCASCADE
  5. 61.C++文件操作实现硬盘检索
  6. 洛谷P1722 矩阵 II
  7. finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码
  8. 设置https验证方式
  9. google dataflow model 论文
  10. 【Hello 2018 A】 Modular Exponentiation