vsync信号

本文详细解析了Android系统中VSync信号的产生过程,从HWComposer模块如何注册vsync回调,到VSync线程的创建与工作原理,以及信号如何通过HWComposer传递到SurfaceFlinger进行处理,最后探讨了SurfaceFlinger如何根据 DispSync 的需求来启用或禁用硬件Vsync。
摘要由CSDN通过智能技术生成

上个小节说明了HWC模块的加载等操作,并且也说明了HWC模块主要用于产生vsync信号,现在的问题是, vsync信号是如何产生的呢? 又是如何传输到SurfaceFlinger 中,处理的呢?在上面的论述中,HWComposer 的构造方法在加载完FB模块打开设备文件以及加载HWC模块之后,会注册vsync信号,

mHwc->registerProcs(mHwc, &mCBContext->procs);

HWComposer_hwc1.h中的mCBContext变量申明如下,

cb_context*                     mCBContext;

是cb_context 的结构体,该结构体定义如下,

HWComposer_hwc1.cpp中的cb_context结构体定义如下,

struct HWComposer::cb_context {
    struct callbacks : public hwc_procs_t {
        // these are here to facilitate the transition when adding
        // new callbacks (an implementation can check for NULL before
        // calling a new callback).
        void (*zero[4])(void);
    };
    callbacks procs;
    HWComposer* hwc;
};

里面有2个变量,一个指向HWComposer对象,1个结构体callbacks,这个结构体会传给HAL层的HWC模块,这样,当有vsync信号时,就可以通过这个结构体进行回调。callbacks由继承自 hwc_procs_t, hwcomposer.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值