EventThread线程对VSync的接收
来源:互联网 发布:使用u盘安装ubuntu 编辑:程序博客网 时间:2024/05/21 08:58
EventThread线程对VSync的接收
EventThread被设计用来接收VSync事件通知,并分发VSync通知给系统中的每一个感兴趣的注册者。VSync来源自底层硬件驱动程序的上报,对于Android能看到的接口来说,它是来自HAL层的hwc_composer_device的抽象硬件设备。若硬件不支持,则HWComposer会创建一个线程去模拟产生VSync事件通知。一旦工作起来,VSync将像一个脉搏一样,不断通知到Surfaceflinger中的EventThread线程,由后者再分发给感兴趣的注册者。
先来看一下EventThread何时被创建并开始运行的。
在SurfaceFlinger类被创建时,它的onFirstRef函数将被调用(因为最终继承自RefBase),代码如下:
因为SurfaceFlinger继承自线程类Thread(上面的行130)调用了run函数,意味着创建一个新线程的执行。它的过程是:Thread::run将创建一个新线程,名称为SurfaceFlinger(后面我们将称之为SurfaceFlinger线程),线程的入口函数Thread::_threadLoop又将调用子类重载的threadLoop函数,不过在调用重载的threadLoop之前,先调用子类重载的readyToRun(只是初次时)。也就是说,此处的run函数调用将启动一个新线程SurfaceFlinger,然后SurfaceFlinger的readyToRun函数在其里面被调用,从而做一些初始化工作,如前面提到的从ashm分配一块共享控制块surface_flinger_cblk_t,见前面的11.5.2小节。
在SurfaceFlinger的readyToRun函数的后面,将会创建EventThread线程(下面的行300):
在其EventThread的onFirstRef中被要求开始执行,见行52(参见文件EventThread.cpp):
这样,EventThead在创建后,马上开始了它的线程循环。
- EventThread线程对VSync的接收
- EventThread线程对VSync的接收
- EventThread线程对VSync的接收
- EventThread线程对VSync的接收
- EventThread线程对VSync的分发
- EventThread线程对VSync的分发
- Android SurfaceFlinger对VSync信号的处理过程分析
- Android 4.4对VSync机制的一个改进
- Android 7.1 GUI系统-vsync信号的产生和接收(五)
- App的启动过程(9)surfaceflinger对vsync的处理
- 线程的监听 广播接收
- unity的垂直同步VSync
- EventThread 详解
- 在指定的线程接收信号 pthread_sigmask
- pthread_join来接收线程的返回参数
- 异步接收子线程的返回值
- C#对串口数据接收的处理
- java对图片接收的实现
- 科学之美:影响人类文明的方程式
- Android--- 利用Application实现全局数据共享
- oracle_error
- Servlet3.1规范翻译——变更历史
- 一种系统异常设计思路
- EventThread线程对VSync的接收
- windows下搭建php环境
- XmlDocument和LINQ to XML两种方式对xml的创建、查询
- JAVA通过反映方法实现C#的委托
- Sencha Touch Carousel 去除底栏
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- 分享30套精美的Web和手机开发UI素材包
- Servlet3.1规范翻译——词汇表
- Android解决获取控件Width和Height为0的问题