摘要:
打印调用栈是android平台问题定位的基本方法,如果需要知道谁在调用某个函数, 可以在此函数中添加打印调用栈函数,弄清楚函数之间的调用关系。 1. Java层打印调用栈方法 RuntimeException here = new RuntimeException("here"); here.fil 阅读全文
摘要:
SurfaceFlinger合成后就进行图像的输出的工作。在图像输出时,存在硬件合成器与不存在的情况有些差别。软件合成时用到图像缓冲区生产者与消费者模型。首先来看看图像缓冲区的初始化。 调用BufferQueue::createBufferQueue创建图像缓冲区,并得到其生产者和消费者接口 利用上 阅读全文
摘要:
android应用中申请的Surface在SurfaceFlinger服务中都有对应有图层Layer与之对应。将这些图层合并且输出到显示外设是SurfaceFlinger的工作重点。本文来分析下合成的过程。合成工作在接收到VSync消息(MessageQueue::REFRESH)后开始。 调用消息 阅读全文
摘要:
HWComposer模块产生VSync信号后要经过分发才能送达到关心VSync事件的模块中去。VSync信号分发大致流程为HWComposer SurfaceFlinger DispSync DispSyncSource 各个具体模块。下面具体分析下这个流程。 在上一篇文章中分析到硬件或者软件VSy 阅读全文
摘要:
Android为了增强界面流畅度引入了VSync机制。VSync信号一般由硬件产生,为了兼容一些老的机器,也可以软件产生。因些,就可以分为硬件VSync和软件VSync。VSync的生成逻辑主要在HWComposer里面。相关文件如下: frameworks/native/services/surf 阅读全文
摘要:
SurfaceFlinger有着自己的消息队列MessageQueue,用来处理显示相关的消息,比如Vsync消息。 相关文件: frameworks/native/services/surfaceflinger/MessageQueue.h frameworks/native/services/s 阅读全文
摘要:
在上一篇文章中,主要分析了Surface的创建过程,对于Layer图层的创建并没有深入跟踪分析。这篇文章将分析Layer图层的创建,并分析handle gbp这两个变量的来源。 在SurfaceFlinger中会根据flags的值创建不同的layer。这里主要以创建普通layer为例进行分析。 创建 阅读全文
摘要:
Android显示系统层次分析 应用层,app从WindowManager服务获取图层,渲染图层 WindowManager管理层,主要管理APP渲染的图层,调用SurfaceFlinger服务, 创建Surface,并将Surface传递给应用 SurfaceFlinger层,对上层负责Surfa 阅读全文
摘要:
生产者和消费者模型是编程中运用比较广泛的模型。在SurfaceFlinger图像绘制、合成、显示也用到了该模型。利用该模型合理的管理图像缓冲区buffer。让整个android系统从绘制到显示的过程有条不紊的进行。 BufferQueue图像缓冲管理者。其成员函数createBufferQueue创 阅读全文
摘要:
客户端首先通过defaultServiceManager获得IServiceManager接口。然后调用IServiceManager的getSerivice接口得到服务的IBInder接口,该接口指向一个BpBinder实体对象。但是问题是我们通过IBInder接口无法调用到我们的服务,还必须经过 阅读全文