service_c
service_c 模块提供图形服务的基础控制接口,包括刷新频率设置与查询、屏幕亮息屏通知、图形服务初始化、开机 Logo 显示与隐藏、图形事件投递以及 GPU Reset 通知等功能。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| GetFrequence | 获取当前图形服务刷新频率 |
| SetFrequence | 设置图形服务刷新频率 |
| IsNativeRunning | 查询Native UI运行状态 |
| SetFrequenceInner | 设置图形服务内部刷新频率 |
| NotifyScreenOn | 通知屏幕亮屏 |
| NotifyScreenOff | 通知屏幕息屏 |
| InitGraphicService | 初始化图形服务 |
| ShowGraphicLogo | 显示开机Logo图片 |
| HideGraphicLogo | 隐藏开机Logo图片 |
| PostGraphicEvent | 向图形服务事件队列投递回调事件 |
| GpuResetStart | 通知GPU Reset开始 |
| GpuResetEnd | 通知GPU Reset结束 |
Functions
GetFrequence
头文件清单
功能说明
- 获取当前图形服务的刷新频率值
- 返回值为当前已设置的频率,单位为Hz
- 若图形服务未初始化或屏幕未亮屏,返回值为0
返回类型:int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 频率为0 | 图形服务未初始化或屏幕未亮屏 |
| 1~60 | 当前刷新频率(Hz) | 图形服务已初始化且屏幕已亮屏 |
SetFrequence
头文件清单
功能说明
- 设置图形服务的刷新频率,通过PostGraphicEvent异步执行
- 设置的频率值通过LowPowerManager进行管理
- 禁止在PostGraphicEvent回调中调用本接口,否则会导致递归调用
前置条件
- 图形服务已通过InitGraphicService()初始化完成
- 屏幕已处于亮屏状态(NotifyScreenOn已调用)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| freq | int | 目标刷新频率(Hz) | (0, 60],即大于0且不超过60 |
SetFrequenceInner
头文件清单
功能说明
- 设置图形服务内部刷新频率,同步执行
- 当频率为满帧(60Hz)时,根据ENABLE_DYNAMIC_FRAME_RATE配置决定是否启用异步渲染模式
- 非满帧时关闭异步渲染模式
- 仅在屏幕亮屏且频率不为0时执行设置
前置条件
- 屏幕已处于亮屏状态(NotifyScreenOn已调用)
- 传入频率参数不为0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| freq | int | 目标刷新频率(Hz) | [1, 60],超过60会被截断为60 |
IsNativeRunning
头文件清单
功能说明
- 查询Native UI是否正在运行
- 返回值通过原子变量读取,线程安全
- 返回1表示Native UI正在运行,返回0表示未运行
返回类型:int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | Native UI未运行 | Native UI未启动或已停止 |
| 1 | Native UI正在运行 | Native UI已启动并正在运行 |
NotifyScreenOn
头文件清单
功能说明
- 通知图形服务屏幕已亮屏
- 首次亮屏时,若ENABLE_DYNAMIC_FRAME_RATE已启用,会退出低功耗模式
- 内部调用GraphicService::NotifyScreenOn()触发RootView全量刷新
- 重复调用时仅首次生效
NotifyScreenOff
头文件清单
功能说明
- 通知图形服务屏幕已息屏
- 息屏后停止LCD中断触发,频率重置为0
- 若ENABLE_DYNAMIC_FRAME_RATE已启用,会进入低功耗模式
- 内部调用GraphicService::NotifyScreenOff()关闭异步渲染模式并刷新待处理帧
InitGraphicService
头文件清单
功能说明
- 初始化图形服务,包括UI框架初始化、输入设备配置、RootView设置
- 创建VsyncEventThread和GuiMainThread两个线程
- 初始化完成后自动调用NotifyScreenOn()亮屏
- 重复调用时直接返回,不重复初始化
前置条件
- LCD屏幕已连接(非Windows模拟器环境下)
- 系统资源充足,能够创建图形服务所需线程
ShowGraphicLogo
头文件清单
功能说明
- 显示开机Logo图片,Logo以居中模式显示覆盖全屏
- Logo图片路径为/boot/data/OPEN_LOGO.bin(QSPI显示模式下为/boot/data/OPEN_LOGO_QSPI.bin)
- 通过PostGraphicEvent异步将Logo添加到RootView
- 重复调用时直接返回,不重复显示
前置条件
- 图形服务已通过InitGraphicService()初始化完成
- ENABLE_IMAGE_PACKER宏已启用
- Logo图片资源文件已存在于指定路径
HideGraphicLogo
头文件清单
功能说明
- 隐藏并销毁开机Logo图片
- 通过PostGraphicEvent异步从RootView移除Logo并释放资源
- Logo图片资源从ImageCacheManager中卸载
- 未显示Logo时调用直接返回
前置条件
- 图形服务已通过InitGraphicService()初始化完成
- ENABLE_IMAGE_PACKER宏已启用
- ShowGraphicLogo()已调用且Logo正在显示
PostGraphicEvent
头文件清单
功能说明
- 向图形服务事件队列投递回调事件,事件在图形主线程中异步执行
- 回调函数执行时,userData作为参数传入
- 事件按投递顺序依次执行
前置条件
- 图形服务已通过InitGraphicService()初始化完成
- eventCb回调函数不为NULL
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| eventCb | GraphicEventCb | 事件回调函数指针 | 非NULL,指向有效回调函数 |
| userData | void* | 传递给回调函数的用户数据指针 | 可为NULL |
GpuResetStart
头文件清单
功能说明
- 通知GPU Reset开始,进入GPU重置状态
- 重置期间清空图形事件队列,重置图形任务触发计数
- 重置期间UpdateGraphicEvent不触发Vsync信号
GpuResetEnd
头文件清单
功能说明
- 通知GPU Reset结束,退出GPU重置状态
- 调用后图形服务恢复正常Vsync事件处理
Type definitions
GraphicEventCb
使用说明
作为PostGraphicEvent接口的入参类型,用于定义图形事件回调函数指针