SurfaceFliger与Vsync信号如何建立链接?

Vsync信号上报流程

Vsync的注册函数,来临时会回调HWComposer的hook_VSYNC方法,接着调用到vsync方法中


大致流程梳理:

该方法会通知给SurfaceFliger的onVsyncReceived方法,接着调用DispSync的addResyncSample方法

DispSyncThread线程被唤醒 ,接着EventThread线程唤醒,上面代码中会遍历singalConnections集合调用Connection的postEvent方法

由于上面卡到了DispSync类调用addResyncSample方法处,故先来看这个类。

DispSyncThread线程

DisSync类会创建一个DispSyncThread并运行其run方法

DispSync的初始化过程

  • 运行DispSyncThread线程,用于收集等待Vsync信号的对象并回调这些对象的onDispSyncEvent方法
  • 这些等待的对象其实就是DispSyncSource对象 , 是在创建两个EventThread接收的参数
  • DispSyncSource的onDispSyncEvent方法阻塞于mCond(Condition)的wait等待被唤醒。
接着分析addResyncSample方法 

此时进入到EventThread线程中

Connection::postEvent

像Bittube发送消息,Looper监听到后发送消息切换到SurfaceFlinger主线程去处理

#### ,MQ::cb_eventReceiver

init初始化过程中MQ会监听BitTube,从而调用到cb_eventReceiver方法

**大致流程**:

发送消息(REFRESH消息),接着就是图形渲染的过程了。

**发送消息代码:**

SurfaceFlinger处理消息

流程梳理

  • HWComposer接受Vsync信号,
  • 唤醒DispSyncThread线程(用于接受Vsync信号),
  • 唤醒EventThread线程,调用到DisplayEventReceiver的sendEvent方法再通过BitTube来发送数据
  • EventThread创建好后会调用MQ的setEventThread方法监听Bittube,调用MQ的方法因此回调到SurfaceFlinger的主线程中处理
  • 进入到渲染流程下篇文章分析

原文链接:SurfaceFliger与Vsync信号如何建立链接? - 掘金 (juejin.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/154703.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钢带EPC纠偏比例伺服液压站比例伺服阀控制器

钢带EPC纠偏比例伺服液压站是一种专门用于卷取机的自动化设备,主要目标是确保钢带的一侧边缘保持平直,从而避免在后续运输和处理过程中损坏带钢的边缘。这种系统主要应用于钢铁、橡胶、造纸等行业的非透明带材连续生产线上。 该系统主要由液压源、电液伺…

RK3568-clock

pll锁相环 总线 gating rk3568.dtsi pmucru: clock-controller@fdd00000 {compatible = "rockchip,rk3568-pmucru";reg = <0x0 0xfdd00000 0x0 0x1000>;rockchip,grf = <&grf>;rockchip,pmugrf = <&pmugrf>;#clock-cells = <1>;#re…

【k8s】5、资源管理命令-声明式

目录 一、 yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 3、yaml和json的主要区别 二、声明式对象管理 1、命令式对象配置 2、声明式对象配置 3、声明式对象管理命令介绍 三、编写资源配置清单 1、 编写yaml文件 2、 启动并查看资源 3、创建service服务对外…

第18章_MySQL8其它新特性

第18章_MySQL8其它新特性 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本&#xff0c;可见这是一个令人兴奋的里程碑版本。MySQL 8版…

1300*C. Social Distance(贪心构造)

Problem - 1367C - Codeforces 解析&#xff1a; 统计出所有连续0序列&#xff0c;并且记录其左右两侧有没有1&#xff0c;然后对于四种情况分别判断即可。 #include<bits/stdc.h> using namespace std; int t,n,k; signed main(){scanf("%d",&t);while(…

酷开科技,让家庭更有温度!

生活中总有一些瞬间&#xff0c;会让我们感到无比温暖和幸福。一个拥抱、一句问候、一杯热茶&#xff0c;都能让我们感受到家庭的温馨和关爱。酷开科技也用自己的方式为我们带来了独属于科技的温暖&#xff0c;通过全新的体验将消费者带进一个充满惊喜的世界&#xff0c;让消费…

HCIP——MGRE实验

一、实验要求 1.R5为ISP&#xff0c;只能进行IP地址配置&#xff1b;其所有地址均为公有IP地址 2.R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方&#xff1b; R2与R5之间使用PPP的chap认证&#xff0c;R5为主认证方&#xff1b; R3与R5之间使用HDLC封装。 3.R1/R2/R3…

linux查看系统版本、内核信息、操作系统类型版本

1. 使用 uname 命令&#xff1a;这将显示完整的内核版本信息&#xff0c;包括内核版本号、主机名、操作系统类型等。 uname -a2. 使用 lsb_release 命令&#xff08;仅适用于支持 LSB&#xff08;Linux Standard Base&#xff09;的发行版&#xff09;&#xff1a;这将显示包含…

VS2022 C# 读取 excel 2023年

今天是2023年6月26日&#xff0c;我有一个excel表要读数据&#xff0c;然后放到winform程序来处理&#xff0c;网上的资料太旧&#xff0c;很多用不起来&#xff0c;试了一个可以使用&#xff0c;记录一下&#xff1a; 一、excel文件后缀需要小写。 二、用VS2022建一个winform…

超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能脚本error报错…

企业文件防泄密方法

企业文件防泄密方法 安企神数据防泄密系统下载使用 企业文件是企业的核心资产&#xff0c;其中可能包含大量的敏感信息&#xff0c;如客户资料、产品配方、财务数据等。一旦这些文件泄露&#xff0c;可能会给企业带来不可估量的损失。 然而&#xff0c;企业文件防泄密是确保…

客户端与服务端实时通讯(轮询、websocket、SSE)

客户端与服务端实时通讯 背景 在某些项目中&#xff0c;某些数据需要展示最新的&#xff0c;实时的&#xff0c;这时候就需要和服务端进行长时间通讯 方案 对于数据实时获取&#xff0c;我们一般会有4种方案&#xff1a; 1.短轮询&#xff1a;使用浏览器的定时器发起http请…