• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&nbsp;(void&nbsp;\*pSurface) | struct&nbsp;NativeWindow&nbsp;\*<br/>创建NativeWindow实例,每次调用都会产生一个新的NativeWindow实例 |
36| OH_NativeWindow_DestroyNativeWindow&nbsp;(struct&nbsp;NativeWindow&nbsp;\*window) | void<br/>将NativeWindow对象的引用计数减1,当引用计数为0的时候,该NativeWindow对象会被析构掉 |
37| OH_NativeWindow_CreateNativeWindowBufferFromSurfaceBuffer&nbsp;(void&nbsp;\*pSurfaceBuffer) | struct&nbsp;NativeWindowBuffer&nbsp;\*<br/>创建NativeWindowBuffer实例,每次调用都会产生一个新的NativeWindowBuffer实例 |
38| OH_NativeWindow_DestroyNativeWindowBuffer&nbsp;(struct&nbsp;NativeWindowBuffer&nbsp;\*buffer) | void<br/>将NativeWindowBuffer对象的引用计数减1,当引用计数为0的时候,该NativeWindowBuffer对象会被析构掉 |
39| OH_NativeWindow_NativeWindowRequestBuffer&nbsp;(struct&nbsp;NativeWindow&nbsp;\*window,&nbsp;struct&nbsp;NativeWindowBuffer&nbsp;\*\*buffer,&nbsp;int&nbsp;\*fenceFd) | int32_t<br/>通过NativeWindow对象申请一块NativeWindowBuffer,用以内容生产 |
40| OH_NativeWindow_NativeWindowFlushBuffer&nbsp;(struct&nbsp;NativeWindow&nbsp;\*window,&nbsp;struct&nbsp;NativeWindowBuffer&nbsp;\*buffer,&nbsp;int&nbsp;fenceFd,&nbsp;Region&nbsp;region) | int32_t<br/>通过NativeWindow将生产好内容的NativeWindowBuffer放回到Buffer队列中,用以内容消费 |
41| OH_NativeWindow_NativeWindowCancelBuffer&nbsp;(struct&nbsp;NativeWindow&nbsp;\*window,&nbsp;struct&nbsp;NativeWindowBuffer&nbsp;\*buffer) | int32_t<br/>通过NativeWindow将之前申请出来的NativeWindowBuffer返还到Buffer队列中,供下次再申请 |
42| OH_NativeWindow_NativeWindowHandleOpt&nbsp;(struct&nbsp;NativeWindow&nbsp;\*window,&nbsp;int&nbsp;code,...) | int32_t<br/>设置/获取NativeWindow的属性,包括设置/获取宽高、内容格式等 |
43| OH_NativeWindow_GetBufferHandleFromNative&nbsp;(struct&nbsp;NativeWindowBuffer&nbsp;\*buffer) | BufferHandle&nbsp;\*<br/>通过NativeWindowBuffer获取该buffer的BufferHandle指针 |
44| OH_NativeWindow_NativeObjectReference&nbsp;(void&nbsp;\*obj) | int32_t<br/>增加一个NativeObject的引用计数 |
45| OH_NativeWindow_NativeObjectUnreference&nbsp;(void&nbsp;\*obj) | int32_t<br/>减少一个NativeObject的引用计数,当引用计数减少为0时,该NativeObject将被析构掉 |
46| OH_NativeWindow_GetNativeObjectMagic&nbsp;(void&nbsp;\*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&lt;OHOS::SurfaceBuffer&gt; |
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&lt;OHOS::Surface&gt; |
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&nbsp;or&nbsp;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&nbsp;or&nbsp;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&nbsp;or&nbsp;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