跳转至

service_c

service_c 模块提供图形服务的基础控制接口,包括刷新频率设置与查询、屏幕亮息屏通知、图形服务初始化、开机 Logo 显示与隐藏、图形事件投递以及 GPU Reset 通知等功能。

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

接口清单

接口名称 功能简述
GetFrequence 获取当前图形服务刷新频率
SetFrequence 设置图形服务刷新频率
IsNativeRunning 查询Native UI运行状态
SetFrequenceInner 设置图形服务内部刷新频率
NotifyScreenOn 通知屏幕亮屏
NotifyScreenOff 通知屏幕息屏
InitGraphicService 初始化图形服务
ShowGraphicLogo 显示开机Logo图片
HideGraphicLogo 隐藏开机Logo图片
PostGraphicEvent 向图形服务事件队列投递回调事件
GpuResetStart 通知GPU Reset开始
GpuResetEnd 通知GPU Reset结束

Functions

GetFrequence

int GetFrequence(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 获取当前图形服务的刷新频率值
  • 返回值为当前已设置的频率,单位为Hz
  • 若图形服务未初始化或屏幕未亮屏,返回值为0

返回类型:int

返回值 文字含义 触发场景
0 频率为0 图形服务未初始化或屏幕未亮屏
1~60 当前刷新频率(Hz) 图形服务已初始化且屏幕已亮屏

SetFrequence

void SetFrequence(int freq)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 设置图形服务的刷新频率,通过PostGraphicEvent异步执行
  • 设置的频率值通过LowPowerManager进行管理
  • 禁止在PostGraphicEvent回调中调用本接口,否则会导致递归调用

前置条件

  • 图形服务已通过InitGraphicService()初始化完成
  • 屏幕已处于亮屏状态(NotifyScreenOn已调用)

入参

名称 参数类型 详细说明 约束取值范围
freq int 目标刷新频率(Hz) (0, 60],即大于0且不超过60

SetFrequenceInner

void SetFrequenceInner(int freq)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 设置图形服务内部刷新频率,同步执行
  • 当频率为满帧(60Hz)时,根据ENABLE_DYNAMIC_FRAME_RATE配置决定是否启用异步渲染模式
  • 非满帧时关闭异步渲染模式
  • 仅在屏幕亮屏且频率不为0时执行设置

前置条件

  • 屏幕已处于亮屏状态(NotifyScreenOn已调用)
  • 传入频率参数不为0

入参

名称 参数类型 详细说明 约束取值范围
freq int 目标刷新频率(Hz) [1, 60],超过60会被截断为60

IsNativeRunning

int IsNativeRunning(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 查询Native UI是否正在运行
  • 返回值通过原子变量读取,线程安全
  • 返回1表示Native UI正在运行,返回0表示未运行

返回类型:int

返回值 文字含义 触发场景
0 Native UI未运行 Native UI未启动或已停止
1 Native UI正在运行 Native UI已启动并正在运行

NotifyScreenOn

void NotifyScreenOn(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 通知图形服务屏幕已亮屏
  • 首次亮屏时,若ENABLE_DYNAMIC_FRAME_RATE已启用,会退出低功耗模式
  • 内部调用GraphicService::NotifyScreenOn()触发RootView全量刷新
  • 重复调用时仅首次生效

NotifyScreenOff

void NotifyScreenOff(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 通知图形服务屏幕已息屏
  • 息屏后停止LCD中断触发,频率重置为0
  • 若ENABLE_DYNAMIC_FRAME_RATE已启用,会进入低功耗模式
  • 内部调用GraphicService::NotifyScreenOff()关闭异步渲染模式并刷新待处理帧

InitGraphicService

void InitGraphicService(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 初始化图形服务,包括UI框架初始化、输入设备配置、RootView设置
  • 创建VsyncEventThread和GuiMainThread两个线程
  • 初始化完成后自动调用NotifyScreenOn()亮屏
  • 重复调用时直接返回,不重复初始化

前置条件

  • LCD屏幕已连接(非Windows模拟器环境下)
  • 系统资源充足,能够创建图形服务所需线程
void ShowGraphicLogo(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 显示开机Logo图片,Logo以居中模式显示覆盖全屏
  • Logo图片路径为/boot/data/OPEN_LOGO.bin(QSPI显示模式下为/boot/data/OPEN_LOGO_QSPI.bin)
  • 通过PostGraphicEvent异步将Logo添加到RootView
  • 重复调用时直接返回,不重复显示

前置条件

  • 图形服务已通过InitGraphicService()初始化完成
  • ENABLE_IMAGE_PACKER宏已启用
  • Logo图片资源文件已存在于指定路径
void HideGraphicLogo(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 隐藏并销毁开机Logo图片
  • 通过PostGraphicEvent异步从RootView移除Logo并释放资源
  • Logo图片资源从ImageCacheManager中卸载
  • 未显示Logo时调用直接返回

前置条件

  • 图形服务已通过InitGraphicService()初始化完成
  • ENABLE_IMAGE_PACKER宏已启用
  • ShowGraphicLogo()已调用且Logo正在显示

PostGraphicEvent

void PostGraphicEvent(GraphicEventCb eventCb, void* userData)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 向图形服务事件队列投递回调事件,事件在图形主线程中异步执行
  • 回调函数执行时,userData作为参数传入
  • 事件按投递顺序依次执行

前置条件

  • 图形服务已通过InitGraphicService()初始化完成
  • eventCb回调函数不为NULL

入参

名称 参数类型 详细说明 约束取值范围
eventCb GraphicEventCb 事件回调函数指针 非NULL,指向有效回调函数
userData void* 传递给回调函数的用户数据指针 可为NULL

GpuResetStart

void GpuResetStart(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 通知GPU Reset开始,进入GPU重置状态
  • 重置期间清空图形事件队列,重置图形任务触发计数
  • 重置期间UpdateGraphicEvent不触发Vsync信号

GpuResetEnd

void GpuResetEnd(void)

头文件清单

#include "middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h"

功能说明

  • 通知GPU Reset结束,退出GPU重置状态
  • 调用后图形服务恢复正常Vsync事件处理

Type definitions

GraphicEventCb

typedef void (*GraphicEventCb)(void*);

使用说明

作为PostGraphicEvent接口的入参类型,用于定义图形事件回调函数指针