1# NativeWindow 2 3 4## **Overview** 5 6**Description:** 7 8提供NativeWindow功能,主要用来和egl对接 9 10\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 11 12**Since:** 13 148 15 16**Version:** 17 181.0 19 20 21## **Summary** 22 23 24### Files 25 26 | File Name | Description | 27| -------- | -------- | 28| [external_window.h](external__window_8h.md) | 定义获取和使用NativeWindow的相关函数 | 29 30 31### Functions 32 33 | Function | Description | 34| -------- | -------- | 35| OH_NativeWindow_CreateNativeWindowFromSurface (void \*pSurface) | struct NativeWindow \*<br/>创建NativeWindow实例,每次调用都会产生一个新的NativeWindow实例 | 36| OH_NativeWindow_DestroyNativeWindow (struct NativeWindow \*window) | void<br/>将NativeWindow对象的引用计数减1,当引用计数为0的时候,该NativeWindow对象会被析构掉 | 37| OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer (void \*pSurfaceBuffer) | struct NativeWindowBuffer \*<br/>创建NativeWindowBuffer实例,每次调用都会产生一个新的NativeWindowBuffer实例 | 38| OH_NativeWindow_DestroyNativeWindowBuffer (struct NativeWindowBuffer \*buffer) | void<br/>将NativeWindowBuffer对象的引用计数减1,当引用计数为0的时候,该NativeWindowBuffer对象会被析构掉 | 39| OH_NativeWindow_NativeWindowRequestBuffer (struct NativeWindow \*window, struct NativeWindowBuffer \*\*buffer, int \*fenceFd) | int32_t<br/>通过NativeWindow对象申请一块NativeWindowBuffer,用以内容生产 | 40| OH_NativeWindow_NativeWindowFlushBuffer (struct NativeWindow \*window, struct NativeWindowBuffer \*buffer, int fenceFd, Region region) | int32_t<br/>通过NativeWindow将生产好内容的NativeWindowBuffer放回到Buffer队列中,用以内容消费 | 41| OH_NativeWindow_NativeWindowCancelBuffer (struct NativeWindow \*window, struct NativeWindowBuffer \*buffer) | int32_t<br/>通过NativeWindow将之前申请出来的NativeWindowBuffer返还到Buffer队列中,供下次再申请 | 42| OH_NativeWindow_NativeWindowHandleOpt (struct NativeWindow \*window, int code,...) | int32_t<br/>设置/获取NativeWindow的属性,包括设置/获取宽高、内容格式等 | 43| OH_NativeWindow_GetBufferHandleFromNative (struct NativeWindowBuffer \*buffer) | BufferHandle \*<br/>通过NativeWindowBuffer获取该buffer的BufferHandle指针 | 44| OH_NativeWindow_NativeObjectReference (void \*obj) | int32_t<br/>增加一个NativeObject的引用计数 | 45| OH_NativeWindow_NativeObjectUnreference (void \*obj) | int32_t<br/>减少一个NativeObject的引用计数,当引用计数减少为0时,该NativeObject将被析构掉 | 46| OH_NativeWindow_GetNativeObjectMagic (void \*obj) | int32_t<br/>获取NativeObject的MagicId | 47 48 49## **Details** 50 51 52## **Function** 53 54 55### OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer() 56 57 58``` 59struct NativeWindowBuffer* OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer (void * pSurfaceBuffer) 60``` 61 62**Description:** 63 64创建NativeWindowBuffer实例,每次调用都会产生一个新的NativeWindowBuffer实例 65 66\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 67 68**Parameters:** 69 70 | Name | Description | 71| -------- | -------- | 72| pSurfaceBuffer | 参数是一个指向生产者buffer的指针,类型为sptr<OHOS::SurfaceBuffer> | 73 74**Returns:** 75 76返回一个指针,指向NativeWindowBuffer的结构体实例 77 78 79### OH_NativeWindow_CreateNativeWindowFromSurface() 80 81 82``` 83struct NativeWindow* OH_NativeWindow_CreateNativeWindowFromSurface (void * pSurface) 84``` 85 86**Description:** 87 88创建NativeWindow实例,每次调用都会产生一个新的NativeWindow实例 89 90\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 91 92**Parameters:** 93 94 | Name | Description | 95| -------- | -------- | 96| pSurface | 参数是一个指向生产者ProduceSurface的指针,类型为sptr<OHOS::Surface> | 97 98**Returns:** 99 100返回一个指针,指向NativeWindow的结构体实例 101 102 103### OH_NativeWindow_DestroyNativeWindow() 104 105 106``` 107void OH_NativeWindow_DestroyNativeWindow (struct NativeWindow * window) 108``` 109 110**Description:** 111 112将NativeWindow对象的引用计数减1,当引用计数为0的时候,该NativeWindow对象会被析构掉 113 114\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 115 116**Parameters:** 117 118 | Name | Description | 119| -------- | -------- | 120| window | 参数是一个NativeWindow的结构体实例的指针 | 121 122 123### OH_NativeWindow_DestroyNativeWindowBuffer() 124 125 126``` 127void OH_NativeWindow_DestroyNativeWindowBuffer (struct NativeWindowBuffer * buffer) 128``` 129 130**Description:** 131 132将NativeWindowBuffer对象的引用计数减1,当引用计数为0的时候,该NativeWindowBuffer对象会被析构掉 133 134\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 135 136**Parameters:** 137 138 | Name | Description | 139| -------- | -------- | 140| buffer | 参数是一个NativeWindowBuffer的结构体实例的指针 | 141 142 143### OH_NativeWindow_GetBufferHandleFromNative() 144 145 146``` 147BufferHandle* OH_NativeWindow_GetBufferHandleFromNative (struct NativeWindowBuffer * buffer) 148``` 149 150**Description:** 151 152通过NativeWindowBuffer获取该buffer的BufferHandle指针 153 154\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 155 156**Parameters:** 157 158 | Name | Description | 159| -------- | -------- | 160| buffer | 参数是一个NativeWindowBuffer的结构体实例的指针 | 161 162**Returns:** 163 164BufferHandle 返回一个指针,指向BufferHandle的结构体实例 165 166 167### OH_NativeWindow_GetNativeObjectMagic() 168 169 170``` 171int32_t OH_NativeWindow_GetNativeObjectMagic (void * obj) 172``` 173 174**Description:** 175 176获取NativeObject的MagicId 177 178\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 179 180**Parameters:** 181 182 | Name | Description | 183| -------- | -------- | 184| obj | 参数是一个NativeWindow or NativeWindowBuffer的结构体实例的指针 | 185 186**Returns:** 187 188MagicId 返回值为魔鬼数字,每个NativeObject唯一 189 190 191### OH_NativeWindow_NativeObjectReference() 192 193 194``` 195int32_t OH_NativeWindow_NativeObjectReference (void * obj) 196``` 197 198**Description:** 199 200增加一个NativeObject的引用计数 201 202\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 203 204**Parameters:** 205 206 | Name | Description | 207| -------- | -------- | 208| obj | 参数是一个NativeWindow or NativeWindowBuffer的结构体实例的指针 | 209 210**Returns:** 211 212GSError 返回值为错误码 213 214 215### OH_NativeWindow_NativeObjectUnreference() 216 217 218``` 219int32_t OH_NativeWindow_NativeObjectUnreference (void * obj) 220``` 221 222**Description:** 223 224减少一个NativeObject的引用计数,当引用计数减少为0时,该NativeObject将被析构掉 225 226\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 227 228**Parameters:** 229 230 | Name | Description | 231| -------- | -------- | 232| obj | 参数是一个NativeWindow or NativeWindowBuffer的结构体实例的指针 | 233 234**Returns:** 235 236GSError 237 238 239### OH_NativeWindow_NativeWindowCancelBuffer() 240 241 242``` 243int32_t OH_NativeWindow_NativeWindowCancelBuffer (struct NativeWindow * window, struct NativeWindowBuffer * buffer ) 244``` 245 246**Description:** 247 248通过NativeWindow将之前申请出来的NativeWindowBuffer返还到Buffer队列中,供下次再申请 249 250\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 251 252**Parameters:** 253 254 | Name | Description | 255| -------- | -------- | 256| window | 参数是一个NativeWindow的结构体实例的指针 | 257| buffer | 参数是一个NativeWindowBuffer的结构体实例的指针 | 258 259**Returns:** 260 261GSError 返回值为错误码 262 263 264### OH_NativeWindow_NativeWindowFlushBuffer() 265 266 267``` 268int32_t OH_NativeWindow_NativeWindowFlushBuffer (struct NativeWindow * window, struct NativeWindowBuffer * buffer, int fenceFd, Region region ) 269``` 270 271**Description:** 272 273通过NativeWindow将生产好内容的NativeWindowBuffer放回到Buffer队列中,用以内容消费 274 275\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 276 277**Parameters:** 278 279 | Name | Description | 280| -------- | -------- | 281| window | 参数是一个NativeWindow的结构体实例的指针 | 282| buffer | 参数是一个NativeWindowBuffer的结构体实例的指针 | 283| fenceFd | 参数是一个文件描述符句柄,用以同步时序 | 284| region | 参数表示一块脏区域,该区域有内容更新 | 285 286**Returns:** 287 288GSError 返回值为错误码 289 290 291### OH_NativeWindow_NativeWindowHandleOpt() 292 293 294``` 295int32_t OH_NativeWindow_NativeWindowHandleOpt (struct NativeWindow * window, int code, ... ) 296``` 297 298**Description:** 299 300设置/获取NativeWindow的属性,包括设置/获取宽高、内容格式等 301 302\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 303 304**Parameters:** 305 306 | Name | Description | 307| -------- | -------- | 308| window | 参数是一个NativeWindow的结构体实例的指针 | 309| code | 操作码 | 310 311**Returns:** 312 313GSError 返回值为错误码 314 315 316### OH_NativeWindow_NativeWindowRequestBuffer() 317 318 319``` 320int32_t OH_NativeWindow_NativeWindowRequestBuffer (struct NativeWindow * window, struct NativeWindowBuffer ** buffer, int * fenceFd ) 321``` 322 323**Description:** 324 325通过NativeWindow对象申请一块NativeWindowBuffer,用以内容生产 326 327\@syscap SystemCapability.Graphic.Graphic2D.NativeWindow 328 329**Parameters:** 330 331 | Name | Description | 332| -------- | -------- | 333| window | 参数是一个NativeWindow的结构体实例的指针 | 334| buffer | 参数是一个NativeWindowBuffer的结构体实例的二级指针 | 335| fenceFd | 参数是一个文件描述符句柄 | 336 337**Returns:** 338 339GSError 返回值为错误码 340