合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
提供获取系统vsync回调的功能,可用于实现应用的绘制帧率与系统帧率同步。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
起始版本:
9
| 名称 | 描述 |
|---|---|
| native_vsync.h | 定义获取和使用NativeVsync的相关函数。 引用文件: <native_vsync/native_vsync.h> 库: libnative_vsync.so |
| 名称 | 描述 |
|---|---|
| typedef enum OHNativeErrorCode OHNativeErrorCode | 接口错误码说明(仅用于查询)。 |
| typedef struct OH_NativeVSync OH_NativeVSync | 提供OH_NativeVSync结构体声明。 |
| typedef void(* OH_NativeVSync_FrameCallback) (long long timestamp, void *data) | VSync回调函数类型。 |
| 名称 | 描述 |
|---|---|
| NATIVE_ERROR_OK = 0, NATIVE_ERROR_INVALID_ARGUMENTS = 40001000, NATIVE_ERROR_NO_PERMISSION = 40301000, NATIVE_ERROR_NO_BUFFER = 40601000, NATIVE_ERROR_NO_CONSUMER = 41202000, NATIVE_ERROR_NOT_INIT = 41203000, NATIVE_ERROR_CONSUMER_CONNECTED = 41206000, NATIVE_ERROR_BUFFER_STATE_INVALID = 41207000, NATIVE_ERROR_BUFFER_IN_CACHE = 41208000, NATIVE_ERROR_BUFFER_QUEUE_FULL = 41209000, NATIVE_ERROR_BUFFER_NOT_IN_CACHE = 41210000,NATIVE_ERROR_CONSUMER_DISCONNECTED = 41211000,NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED = 41212000, NATIVE_ERROR_UNSUPPORTED = 50102000, NATIVE_ERROR_UNKNOWN = 50002000,NATIVE_ERROR_HDI_ERROR = 50007000,NATIVE_ERROR_BINDER_ERROR = 50401000, NATIVE_ERROR_EGL_STATE_UNKNOWN = 60001000, NATIVE_ERROR_EGL_API_FAILED = 60002000 } | 接口错误码说明(仅用于查询)。 |
| 名称 | 描述 |
|---|---|
| OH_NativeVSync_Create (const char *name, unsigned int length) | 创建一个OH_NativeVSync实例,每次调用都会产生一个新的实例。 |
| OH_NativeVSync_Destroy (OH_NativeVSync *nativeVsync) | 销毁OH_NativeVSync实例。 |
| int OH_NativeVSync_RequestFrame (OH_NativeVSync *nativeVsync, OH_NativeVSync_FrameCallback callback, void *data) | 请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,则只会触发最后一个回调。 |
| int OH_NativeVSync_RequestFrameWithMultiCallback (OH_NativeVSync *nativeVsync, OH_NativeVSync_FrameCallback callback, void *data) | 请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,每一次传入的callback都会被执行。 |
| OH_NativeVSync_GetPeriod (OH_NativeVSync *nativeVsync, long long *period) | 获取vsync周期。 |
- typedef struct OH_NativeVSync OH_NativeVSync
描述:
提供OH_NativeVSync结构体声明。
- typedef void(* OH_NativeVSync_FrameCallback) (long long timestamp, void *data)
描述:
VSync回调函数类型。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
参数:
| 名称 | 描述 |
|---|---|
| timestamp | VSync使用CLOCK_MONOTONIC获取的系统时间戳, 单位为纳秒。 |
| data | 用户自定义数据。 |
- typedef enum OHNativeErrorCode OHNativeErrorCode
描述
接口错误码说明(仅用于查询)。
起始版本: 12
- enum OHNativeErrorCode
描述
接口错误码说明(仅用于查询)。
起始版本: 12
| 枚举值 | 描述 |
|---|---|
| NATIVE_ERROR_OK | 成功。 |
| NATIVE_ERROR_INVALID_ARGUMENTS | 入参无效。 |
| NATIVE_ERROR_NO_PERMISSION | 无权限操作。 |
| NATIVE_ERROR_NO_BUFFER | 无空闲可用的buffer。 |
| NATIVE_ERROR_NO_CONSUMER | 消费端不存在。 |
| NATIVE_ERROR_NOT_INIT | 未初始化。 |
| NATIVE_ERROR_CONSUMER_CONNECTED | 消费端已经被连接。 |
| NATIVE_ERROR_BUFFER_STATE_INVALID | buffer状态不符合预期。 |
| NATIVE_ERROR_BUFFER_IN_CACHE | buffer已在缓存队列中。 |
| NATIVE_ERROR_BUFFER_QUEUE_FULL | 队列已满。 |
| NATIVE_ERROR_BUFFER_NOT_IN_CACHE | buffer不在缓存队列中。 |
| NATIVE_ERROR_CONSUMER_DISCONNECTED | 消费端已经被断开连接。 |
| NATIVE_ERROR_CONSUMER_NO_LISTENER_REGISTERED | 消费端未注册listener回调函数。 |
| NATIVE_ERROR_UNSUPPORTED | 当前设备或平台不支持。 |
| NATIVE_ERROR_UNKNOWN | 未知错误,请查看日志。 |
| NATIVE_ERROR_HDI_ERROR | HDI接口调用失败。 |
| NATIVE_ERROR_BINDER_ERROR | 跨进程通信失败。 |
| NATIVE_ERROR_EGL_STATE_UNKNOWN | egl环境状态异常。 |
| NATIVE_ERROR_EGL_API_FAILED | egl接口调用失败。 |
- int OH_NativeVSync_GetPeriod (OH_NativeVSync * nativeVsync, long long * period )
描述:
获取vsync周期。
vsync周期是在每次使用OH_NativeVSync_RequestFrame接口请求vsync信号后收到OH_NativeVSync_FrameCallback回调的时候才会更新。
首次使用该接口获取vsync周期之前,需要先使用OH_NativeVSync_RequestFrame接口请求vsync信号,在收到OH_NativeVSync_FrameCallback回调之后,才可以通过该接口获取到vsync周期。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
参数:
| 名称 | 描述 |
|---|---|
| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
| period | 表示vsync周期,作为出参使用。 |
返回:
返回值为0表示执行成功,其他返回值可参考OHNativeErrorCode。
起始版本:
10
- OH_NativeVSync* OH_NativeVSync_Create (const char * name, unsigned int length )
描述:
创建一个OH_NativeVSync实例,每次调用都会产生一个新的实例。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
参数:
| 名称 | 描述 |
|---|---|
| name | 表示一个名字,与创建的OH_NativeVSync实例关联。 |
| length | name的长度(字符数)。 |
返回:
返回一个指向OH_NativeVSync实例的指针。
- void OH_NativeVSync_Destroy (OH_NativeVSync * nativeVsync)
描述:
销毁OH_NativeVSync实例。
销毁后的OH_NativeVSync指针不能再继续使用,否则会有野指针问题,尤其需要注意多线程并发时对于OH_NativeVSync指针的管理。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
参数:
| 名称 | 描述 |
|---|---|
| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
- int OH_NativeVSync_RequestFrame (OH_NativeVSync * nativeVsync, OH_NativeVSync_FrameCallback callback, void * data )
描述:
请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,则只会触发最后一个回调。
@syscap SystemCapability.Graphic.Graphic2D.NativeVsync
参数:
| 名称 | 描述 |
|---|---|
| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
| callback | 一个OH_NativeVSync_FrameCallback类型的函数指针,当下一次vsync信号到来时会被调用。 |
| data | 一个指向用户自定义数据结构的指针,类型是void*。 |
返回:
返回值为0表示执行成功,其他返回值可参考OHNativeErrorCode。
- int OH_NativeVSync_RequestFrameWithMultiCallback (OH_NativeVSync* nativeVsync, OH_NativeVSync_FrameCallback callback, void* data )
描述
请求下一次vsync信号,当信号到来时,调用回调函数callback。 如果在同一帧内中多次调用此接口,每一次传入的callback都会被执行。
系统能力: SystemCapability.Graphic.Graphic2D.NativeVsync
起始版本: 12
参数:
| 名称 | 描述 |
|---|---|
| nativeVsync | 一个指向OH_NativeVSync实例的指针。 |
| callback | 一个OH_NativeVSync_FrameCallback类型的函数指针,当下一次vsync信号到来时会被调用。 |
| data | 一个指向用户自定义数据结构的指针,类型是void*。 |
返回:
返回值为0表示执行成功,其他返回值可参考OHNativeErrorCode。
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功