Android13 Surface LockCanvas流程分析-CSDN博客
Surface的lockCanvas用于获取Canvas对象,以便进行绘图操作,代码如下:
|
|
调用nativeLockCanvas方法,nativeLockCanvas是一个Native方法在android_view_Surface.cpp中实现:
Surface的lockCanvas用于获取Canvas对象,以便进行绘图操作,代码如下:
|
|
调用nativeLockCanvas方法,nativeLockCanvas是一个Native方法在android_view_Surface.cpp中实现:
Surface::queueBuffer是Android系统中Surface类的一个成员函数,用于将图像数据放入Surface的缓冲区中。它的调用地方主要包括以下几个:
Surface的unlockCanvasAndPost用于解锁并提交Surface上的画布内容,代码如下:
|
|
调用Surface的unlockSwCanvasAndPost方法:
SurfaceFlinger的commit方法用于将应用程序的绘制结果提交到屏幕上显示。
主要就是处理app端发起的一系列transaction的事务请求,需要对这些请求进行识别是否当前帧处理,处理过程就是把事务中的属性取出,然后更新到Layer中,偶尔buffer更新的还需要进行相关的latchbuffer操作,SurfaceFlinger的commit代码如下:
SurfaceFlinger的composite方法,用于将多个窗口的图像进行合成,主要负责对相关要进行上帧的layer进行,识别排序好,然后合成,有hwc合成的会构建对应OutputLayer传递hwc,GPU合成则直接合成,再传递到hwc中,它主要完成以下几个步骤:
onComposerHalHotplug是一个Android系统中的一个事件回调函数,用于处理Composer HAL(Hardware Abstraction Layer)的热插拔事件。Composer HAL是Android系统中负责处理图形渲染和显示的硬件抽象层,它与硬件驱动程序和图形服务之间进行通信。
onComposerHalRefresh方法是SurfaceFlinger中的一个函数。该方法的作用是在Composer HAL刷新时被调用,用于更新显示内容。onComposerHalRefresh方法会在SurfaceFlinger接收到Composer HAL刷新事件时被调用。Composer HAL是硬件抽象层的一部分,负责与硬件显示设备进行通信。当Composer HAL完成一次刷新操作后,会通知SurfaceFlinger进行相应的处理。
onComposerHalVsync是一个Android系统中的一个回调函数,用于在垂直同步(Vsync)事件发生时通知应用程序。Vsync是指显示器刷新的时间点,它通常以固定的频率发生,比如60Hz。应用程序可以通过注册onComposerHalVsync回调函数来获取Vsync事件的通知。