1e41f4b71Sopenharmony_ci# NativeDisplaySoloist 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## Overview 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ciThe NativeDisplaySoloist module provides the native service that control the frame rate in threads other than the UI thread. 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci**Since**: 12 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## Summary 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci### Files 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci| Name| Description| 17e41f4b71Sopenharmony_ci| -------- | -------- | 18e41f4b71Sopenharmony_ci| [native_display_soloist.h](native__display__soloist_8h.md) | Declares the functions for obtaining and using native display soloist.| 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci### Structs 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci| Name| Description| 24e41f4b71Sopenharmony_ci| -------- | -------- | 25e41f4b71Sopenharmony_ci| struct [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) | Describes the expected frame rate range.| 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci### Types 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci| Name| Description| 31e41f4b71Sopenharmony_ci| -------- | -------- | 32e41f4b71Sopenharmony_ci| typedef struct [OH_DisplaySoloist](#oh_displaysoloist) [OH_DisplaySoloist](#oh_displaysoloist) | Provides the declaration of an **OH_DisplaySoloist** struct.| 33e41f4b71Sopenharmony_ci| typedef void(\* [OH_DisplaySoloist_FrameCallback](#oh_displaysoloist_framecallback)) (long long timestamp, long long targetTimestamp, void \*data) | Defines the pointer to an OH_DisplaySoloist callback function.| 34e41f4b71Sopenharmony_ci| typedef struct [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) [DisplaySoloist_ExpectedRateRange](#displaysoloist_expectedraterange) | Defines a struct for the expected frame rate range.| 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci### Functions 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci| Name| Description| 40e41f4b71Sopenharmony_ci| -------- | -------- | 41e41f4b71Sopenharmony_ci| [OH_DisplaySoloist](#oh_displaysoloist) \* [OH_DisplaySoloist_Create](#oh_displaysoloist_create) (bool useExclusiveThread) | Creates an **OH_DisplaySoloist** instance. A new **OH_DisplaySoloist** instance is created each time this API is called.| 42e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Destroy](#oh_displaysoloist_destroy) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist) | Destroys an **OH_DisplaySoloist** object and reclaims the memory occupied.| 43e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Start](#oh_displaysoloist_start) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist, [OH_DisplaySoloist_FrameCallback](#oh_displaysoloist_framecallback) callback, void \*data) | Sets a callback function for each frame. The callback function is triggered each time a VSync signal arrives.| 44e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Stop](#oh_displaysoloist_stop) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist) | Stops requesting the next VSync signal and triggering the callback function.| 45e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_SetExpectedFrameRateRange](#oh_displaysoloist_setexpectedframeraterange) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist, [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) \*range) | Sets the expected frame rate range.| 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci## Type Description 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci### DisplaySoloist_ExpectedRateRange 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci``` 54e41f4b71Sopenharmony_citypedef struct DisplaySoloist_ExpectedRateRange DisplaySoloist_ExpectedRateRange 55e41f4b71Sopenharmony_ci``` 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci**Description** 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ciDefines a struct for the expected frame rate range. 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci**Since**: 12 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci### OH_DisplaySoloist 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci``` 67e41f4b71Sopenharmony_citypedef struct OH_DisplaySoloist OH_DisplaySoloist 68e41f4b71Sopenharmony_ci``` 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci**Description** 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ciProvides the declaration of an **OH_DisplaySoloist** struct. 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci**Since**: 12 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci### OH_DisplaySoloist_FrameCallback 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci``` 80e41f4b71Sopenharmony_citypedef void(* OH_DisplaySoloist_FrameCallback) (long long timestamp, long long targetTimestamp, void *data) 81e41f4b71Sopenharmony_ci``` 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci**Description** 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ciDefines the pointer to an OH_DisplaySoloist callback function. 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci**Since**: 12 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci**Parameters** 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci| Name| Description| 92e41f4b71Sopenharmony_ci| -------- | -------- | 93e41f4b71Sopenharmony_ci| timestamp | VSync timestamp.| 94e41f4b71Sopenharmony_ci| targetTimestamp | Expected VSync timestamp of the next frame.| 95e41f4b71Sopenharmony_ci| data | User-defined data.| 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci## Function Description 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Create() 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci``` 104e41f4b71Sopenharmony_ciOH_DisplaySoloist* OH_DisplaySoloist_Create (bool useExclusiveThread) 105e41f4b71Sopenharmony_ci``` 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**Description** 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ciCreates an **OH_DisplaySoloist** instance. A new **OH_DisplaySoloist** instance is created each time this API is called. 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci**Since**: 12 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci**Parameters** 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci| Name| Description| 116e41f4b71Sopenharmony_ci| -------- | -------- | 117e41f4b71Sopenharmony_ci| useExclusiveThread | Whether the **OH_DisplaySoloist** instance exclusively occupies a thread. The value **true** means that the instance exclusively occupies a thread, and **false** means that the instance shares a thread with others.| 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci**Returns** 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ciReturns the pointer to the [OH_DisplaySoloist](#oh_displaysoloist) instance created if the operation is successful; returns a null pointer otherwise. The failure cause may be out of memory. 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Destroy() 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci``` 127e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Destroy (OH_DisplaySoloist* displaySoloist) 128e41f4b71Sopenharmony_ci``` 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci**Description** 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ciDestroys an **OH_DisplaySoloist** object and reclaims the memory occupied. 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci**Since**: 12 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci**Parameters** 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci| Name| Description| 139e41f4b71Sopenharmony_ci| -------- | -------- | 140e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**Returns** 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise. 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci### OH_DisplaySoloist_SetExpectedFrameRateRange() 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci``` 150e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_SetExpectedFrameRateRange (OH_DisplaySoloist* displaySoloist, DisplaySoloist_ExpectedRateRange* range ) 151e41f4b71Sopenharmony_ci``` 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci**Description** 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ciSets the expected frame rate range. 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci**Since**: 12 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**Parameters** 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci| Name| Description| 162e41f4b71Sopenharmony_ci| -------- | -------- | 163e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 164e41f4b71Sopenharmony_ci| range | Pointer to the expected frame rate range, which is a [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) instance.| 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**Returns** 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise. 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Start() 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci``` 174e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Start (OH_DisplaySoloist* displaySoloist, OH_DisplaySoloist_FrameCallback callback, void* data ) 175e41f4b71Sopenharmony_ci``` 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**Description** 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ciSets a callback function for each frame. The callback function is triggered each time a VSync signal arrives. 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**Since**: 12 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci**Parameters** 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci| Name| Description| 186e41f4b71Sopenharmony_ci| -------- | -------- | 187e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 188e41f4b71Sopenharmony_ci| callback | Callback function to be triggered when the next VSync signal arrives.| 189e41f4b71Sopenharmony_ci| data | Pointer to the user-defined data struct. The type is void\*.| 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci**Returns** 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise. 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Stop() 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci``` 199e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Stop (OH_DisplaySoloist* displaySoloist) 200e41f4b71Sopenharmony_ci``` 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci**Description** 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ciStops requesting the next VSync signal and triggering the callback function. 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**Since**: 12 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**Parameters** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| Name| Description| 211e41f4b71Sopenharmony_ci| -------- | -------- | 212e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**Returns** 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise. 217