1 /* Generated by wayland-scanner 1.22.0 */
2 
3 #ifndef REMOTE_SHELL_UNSTABLE_V2_CLIENT_PROTOCOL_H
4 #define REMOTE_SHELL_UNSTABLE_V2_CLIENT_PROTOCOL_H
5 
6 #include <stdint.h>
7 #include <stddef.h>
8 #include "wayland-client.h"
9 
10 #ifdef  __cplusplus
11 extern "C" {
12 #endif
13 
14 /**
15  * @page page_remote_shell_unstable_v2 The remote_shell_unstable_v2 protocol
16  * Create remote desktop-style surfaces
17  *
18  * @section page_desc_remote_shell_unstable_v2 Description
19  *
20  * remote_shell allows clients to turn a wl_surface into a "real window"
21  * which can be stacked and activated by the user.
22  *
23  * Warning! The protocol described in this file is experimental and backward
24  * incompatible changes may be made. Backward compatible changes may be added
25  * together with the corresponding interface version bump. Backward
26  * incompatible changes are done by bumping the version number in the protocol
27  * and interface names and resetting the interface version. Once the protocol
28  * is to be declared stable, the 'z' prefix and the version number in the
29  * protocol and interface names are removed and the interface version number is
30  * reset.
31  *
32  * @section page_ifaces_remote_shell_unstable_v2 Interfaces
33  * - @subpage page_iface_zcr_remote_shell_v2 - remote_shell
34  * - @subpage page_iface_zcr_remote_surface_v2 - A desktop window
35  * - @subpage page_iface_zcr_notification_surface_v2 - A notification window
36  * - @subpage page_iface_zcr_input_method_surface_v2 - An input method window
37  * - @subpage page_iface_zcr_toast_surface_v2 - A toast window
38  * - @subpage page_iface_zcr_remote_output_v2 - remote shell interface to a wl_output
39  * @section page_copyright_remote_shell_unstable_v2 Copyright
40  * <pre>
41  *
42  * Copyright 2021 The Chromium Authors
43  *
44  * Permission is hereby granted, free of charge, to any person obtaining a
45  * copy of this software and associated documentation files (the "Software"),
46  * to deal in the Software without restriction, including without limitation
47  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
48  * and/or sell copies of the Software, and to permit persons to whom the
49  * Software is furnished to do so, subject to the following conditions:
50  *
51  * The above copyright notice and this permission notice (including the next
52  * paragraph) shall be included in all copies or substantial portions of the
53  * Software.
54  *
55  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
56  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
57  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
58  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
59  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
60  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
61  * DEALINGS IN THE SOFTWARE.
62  * </pre>
63  */
64 struct wl_output;
65 struct wl_region;
66 struct wl_surface;
67 struct zcr_input_method_surface_v2;
68 struct zcr_notification_surface_v2;
69 struct zcr_remote_output_v2;
70 struct zcr_remote_shell_v2;
71 struct zcr_remote_surface_v2;
72 struct zcr_toast_surface_v2;
73 
74 #ifndef ZCR_REMOTE_SHELL_V2_INTERFACE
75 #define ZCR_REMOTE_SHELL_V2_INTERFACE
76 /**
77  * @page page_iface_zcr_remote_shell_v2 zcr_remote_shell_v2
78  * @section page_iface_zcr_remote_shell_v2_desc Description
79  *
80  * The global interface that allows clients to turn a wl_surface into a
81  * "real window" which is remotely managed but can be stacked, activated
82  * and made fullscreen by the user.
83  * @section page_iface_zcr_remote_shell_v2_api API
84  * See @ref iface_zcr_remote_shell_v2.
85  */
86 /**
87  * @defgroup iface_zcr_remote_shell_v2 The zcr_remote_shell_v2 interface
88  *
89  * The global interface that allows clients to turn a wl_surface into a
90  * "real window" which is remotely managed but can be stacked, activated
91  * and made fullscreen by the user.
92  */
93 extern const struct wl_interface zcr_remote_shell_v2_interface;
94 #endif
95 #ifndef ZCR_REMOTE_SURFACE_V2_INTERFACE
96 #define ZCR_REMOTE_SURFACE_V2_INTERFACE
97 /**
98  * @page page_iface_zcr_remote_surface_v2 zcr_remote_surface_v2
99  * @section page_iface_zcr_remote_surface_v2_desc Description
100  *
101  * An interface that may be implemented by a wl_surface, for
102  * implementations that provide a desktop-style user interface
103  * and allows for remotely managed windows.
104  *
105  * It provides requests to treat surfaces like windows, allowing to set
106  * properties like app id and geometry.
107  *
108  * The client must call wl_surface.commit on the corresponding wl_surface
109  * for the remote_surface state to take effect.
110  *
111  * For a surface to be mapped by the compositor the client must have
112  * committed both an remote_surface state and a buffer.
113  * @section page_iface_zcr_remote_surface_v2_api API
114  * See @ref iface_zcr_remote_surface_v2.
115  */
116 /**
117  * @defgroup iface_zcr_remote_surface_v2 The zcr_remote_surface_v2 interface
118  *
119  * An interface that may be implemented by a wl_surface, for
120  * implementations that provide a desktop-style user interface
121  * and allows for remotely managed windows.
122  *
123  * It provides requests to treat surfaces like windows, allowing to set
124  * properties like app id and geometry.
125  *
126  * The client must call wl_surface.commit on the corresponding wl_surface
127  * for the remote_surface state to take effect.
128  *
129  * For a surface to be mapped by the compositor the client must have
130  * committed both an remote_surface state and a buffer.
131  */
132 extern const struct wl_interface zcr_remote_surface_v2_interface;
133 #endif
134 #ifndef ZCR_NOTIFICATION_SURFACE_V2_INTERFACE
135 #define ZCR_NOTIFICATION_SURFACE_V2_INTERFACE
136 /**
137  * @page page_iface_zcr_notification_surface_v2 zcr_notification_surface_v2
138  * @section page_iface_zcr_notification_surface_v2_desc Description
139  *
140  * An interface that may be implemented by a wl_surface to host
141  * notification contents.
142  * @section page_iface_zcr_notification_surface_v2_api API
143  * See @ref iface_zcr_notification_surface_v2.
144  */
145 /**
146  * @defgroup iface_zcr_notification_surface_v2 The zcr_notification_surface_v2 interface
147  *
148  * An interface that may be implemented by a wl_surface to host
149  * notification contents.
150  */
151 extern const struct wl_interface zcr_notification_surface_v2_interface;
152 #endif
153 #ifndef ZCR_INPUT_METHOD_SURFACE_V2_INTERFACE
154 #define ZCR_INPUT_METHOD_SURFACE_V2_INTERFACE
155 /**
156  * @page page_iface_zcr_input_method_surface_v2 zcr_input_method_surface_v2
157  * @section page_iface_zcr_input_method_surface_v2_desc Description
158  *
159  * An interface that may be implemented by a wl_surface to host IME contents.
160  * @section page_iface_zcr_input_method_surface_v2_api API
161  * See @ref iface_zcr_input_method_surface_v2.
162  */
163 /**
164  * @defgroup iface_zcr_input_method_surface_v2 The zcr_input_method_surface_v2 interface
165  *
166  * An interface that may be implemented by a wl_surface to host IME contents.
167  */
168 extern const struct wl_interface zcr_input_method_surface_v2_interface;
169 #endif
170 #ifndef ZCR_TOAST_SURFACE_V2_INTERFACE
171 #define ZCR_TOAST_SURFACE_V2_INTERFACE
172 /**
173  * @page page_iface_zcr_toast_surface_v2 zcr_toast_surface_v2
174  * @section page_iface_zcr_toast_surface_v2_desc Description
175  *
176  * An interface that may be implemented by a wl_surface to host
177  * toast contents.
178  * @section page_iface_zcr_toast_surface_v2_api API
179  * See @ref iface_zcr_toast_surface_v2.
180  */
181 /**
182  * @defgroup iface_zcr_toast_surface_v2 The zcr_toast_surface_v2 interface
183  *
184  * An interface that may be implemented by a wl_surface to host
185  * toast contents.
186  */
187 extern const struct wl_interface zcr_toast_surface_v2_interface;
188 #endif
189 #ifndef ZCR_REMOTE_OUTPUT_V2_INTERFACE
190 #define ZCR_REMOTE_OUTPUT_V2_INTERFACE
191 /**
192  * @page page_iface_zcr_remote_output_v2 zcr_remote_output_v2
193  * @section page_iface_zcr_remote_output_v2_desc Description
194  *
195  * An additional interface to a wl_output object, which allows the
196  * client to access additional functionality for output.
197  * @section page_iface_zcr_remote_output_v2_api API
198  * See @ref iface_zcr_remote_output_v2.
199  */
200 /**
201  * @defgroup iface_zcr_remote_output_v2 The zcr_remote_output_v2 interface
202  *
203  * An additional interface to a wl_output object, which allows the
204  * client to access additional functionality for output.
205  */
206 extern const struct wl_interface zcr_remote_output_v2_interface;
207 #endif
208 
209 #ifndef ZCR_REMOTE_SHELL_V2_ERROR_ENUM
210 #define ZCR_REMOTE_SHELL_V2_ERROR_ENUM
211 enum zcr_remote_shell_v2_error {
212 	/**
213 	 * given wl_surface has another role
214 	 */
215 	ZCR_REMOTE_SHELL_V2_ERROR_ROLE = 0,
216 	/**
217 	 * invalid notification key
218 	 */
219 	ZCR_REMOTE_SHELL_V2_ERROR_INVALID_NOTIFICATION_KEY = 1,
220 };
221 #endif /* ZCR_REMOTE_SHELL_V2_ERROR_ENUM */
222 
223 #ifndef ZCR_REMOTE_SHELL_V2_CONTAINER_ENUM
224 #define ZCR_REMOTE_SHELL_V2_CONTAINER_ENUM
225 /**
226  * @ingroup iface_zcr_remote_shell_v2
227  * containers for remote surfaces
228  *
229  * Determine how a remote surface should be stacked relative to other
230  * shell surfaces.
231  */
232 enum zcr_remote_shell_v2_container {
233 	/**
234 	 * default container
235 	 */
236 	ZCR_REMOTE_SHELL_V2_CONTAINER_DEFAULT = 1,
237 	/**
238 	 * system modal container
239 	 */
240 	ZCR_REMOTE_SHELL_V2_CONTAINER_OVERLAY = 2,
241 };
242 #endif /* ZCR_REMOTE_SHELL_V2_CONTAINER_ENUM */
243 
244 #ifndef ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_ENUM
245 #define ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_ENUM
246 /**
247  * @ingroup iface_zcr_remote_shell_v2
248  * the layout mode
249  *
250  * Determine how a client should layout surfaces.
251  */
252 enum zcr_remote_shell_v2_layout_mode {
253 	/**
254 	 * multiple windows
255 	 */
256 	ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_WINDOWED = 1,
257 	/**
258 	 * restricted mode for tablet
259 	 */
260 	ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_TABLET = 2,
261 };
262 #endif /* ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_ENUM */
263 
264 #ifndef ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_ENUM
265 #define ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_ENUM
266 /**
267  * @ingroup iface_zcr_remote_shell_v2
268  * desktop foucs state
269  *
270  * Desktop client window focus state.
271  */
272 enum zcr_remote_shell_v2_desktop_focus_state {
273 	/**
274 	 * no window get focused
275 	 */
276 	ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_NO_FOCUS = 1,
277 	/**
278 	 * client window get focused
279 	 */
280 	ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_CLIENT_FOCUSED = 2,
281 	/**
282 	 * other client window get focused
283 	 */
284 	ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_OTHER_CLIENT_FOCUSED = 3,
285 };
286 #endif /* ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_ENUM */
287 
288 /**
289  * @ingroup iface_zcr_remote_shell_v2
290  * @struct zcr_remote_shell_v2_listener
291  */
292 struct zcr_remote_shell_v2_listener {
293 	/**
294 	 * initialize scale configuration
295 	 *
296 	 * Sends the default device scale factor.
297 	 * @param scale DP to pixels ratio, in 8.24 fixed point format
298 	 */
299 	void (*default_device_scale_factor)(void *data,
300 					    struct zcr_remote_shell_v2 *zcr_remote_shell_v2,
301 					    int32_t scale);
302 	/**
303 	 * sends the layout_mode
304 	 *
305 	 * Sends the layout_mode used by the server.
306 	 */
307 	void (*layout_mode)(void *data,
308 			    struct zcr_remote_shell_v2 *zcr_remote_shell_v2,
309 			    uint32_t layout_mode);
310 	/**
311 	 * desktop window focus state change
312 	 *
313 	 * Notifies client that the window focus state change.
314 	 */
315 	void (*desktop_focus_state_changed)(void *data,
316 					    struct zcr_remote_shell_v2 *zcr_remote_shell_v2,
317 					    uint32_t focus_state);
318 };
319 
320 /**
321  * @ingroup iface_zcr_remote_shell_v2
322  */
323 static inline int
zcr_remote_shell_v2_add_listener(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,const struct zcr_remote_shell_v2_listener * listener,void * data)324 zcr_remote_shell_v2_add_listener(struct zcr_remote_shell_v2 *zcr_remote_shell_v2,
325 				 const struct zcr_remote_shell_v2_listener *listener, void *data)
326 {
327 	return wl_proxy_add_listener((struct wl_proxy *) zcr_remote_shell_v2,
328 				     (void (**)(void)) listener, data);
329 }
330 
331 #define ZCR_REMOTE_SHELL_V2_DESTROY 0
332 #define ZCR_REMOTE_SHELL_V2_GET_REMOTE_SURFACE 1
333 #define ZCR_REMOTE_SHELL_V2_GET_NOTIFICATION_SURFACE 2
334 #define ZCR_REMOTE_SHELL_V2_GET_INPUT_METHOD_SURFACE 3
335 #define ZCR_REMOTE_SHELL_V2_GET_TOAST_SURFACE 4
336 #define ZCR_REMOTE_SHELL_V2_GET_REMOTE_OUTPUT 5
337 
338 /**
339  * @ingroup iface_zcr_remote_shell_v2
340  */
341 #define ZCR_REMOTE_SHELL_V2_DEFAULT_DEVICE_SCALE_FACTOR_SINCE_VERSION 1
342 /**
343  * @ingroup iface_zcr_remote_shell_v2
344  */
345 #define ZCR_REMOTE_SHELL_V2_LAYOUT_MODE_SINCE_VERSION 1
346 /**
347  * @ingroup iface_zcr_remote_shell_v2
348  */
349 #define ZCR_REMOTE_SHELL_V2_DESKTOP_FOCUS_STATE_CHANGED_SINCE_VERSION 1
350 
351 /**
352  * @ingroup iface_zcr_remote_shell_v2
353  */
354 #define ZCR_REMOTE_SHELL_V2_DESTROY_SINCE_VERSION 1
355 /**
356  * @ingroup iface_zcr_remote_shell_v2
357  */
358 #define ZCR_REMOTE_SHELL_V2_GET_REMOTE_SURFACE_SINCE_VERSION 1
359 /**
360  * @ingroup iface_zcr_remote_shell_v2
361  */
362 #define ZCR_REMOTE_SHELL_V2_GET_NOTIFICATION_SURFACE_SINCE_VERSION 1
363 /**
364  * @ingroup iface_zcr_remote_shell_v2
365  */
366 #define ZCR_REMOTE_SHELL_V2_GET_INPUT_METHOD_SURFACE_SINCE_VERSION 1
367 /**
368  * @ingroup iface_zcr_remote_shell_v2
369  */
370 #define ZCR_REMOTE_SHELL_V2_GET_TOAST_SURFACE_SINCE_VERSION 1
371 /**
372  * @ingroup iface_zcr_remote_shell_v2
373  */
374 #define ZCR_REMOTE_SHELL_V2_GET_REMOTE_OUTPUT_SINCE_VERSION 1
375 
376 /** @ingroup iface_zcr_remote_shell_v2 */
377 static inline void
zcr_remote_shell_v2_set_user_data(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,void * user_data)378 zcr_remote_shell_v2_set_user_data(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, void *user_data)
379 {
380 	wl_proxy_set_user_data((struct wl_proxy *) zcr_remote_shell_v2, user_data);
381 }
382 
383 /** @ingroup iface_zcr_remote_shell_v2 */
384 static inline void *
zcr_remote_shell_v2_get_user_data(struct zcr_remote_shell_v2 * zcr_remote_shell_v2)385 zcr_remote_shell_v2_get_user_data(struct zcr_remote_shell_v2 *zcr_remote_shell_v2)
386 {
387 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_remote_shell_v2);
388 }
389 
390 static inline uint32_t
zcr_remote_shell_v2_get_version(struct zcr_remote_shell_v2 * zcr_remote_shell_v2)391 zcr_remote_shell_v2_get_version(struct zcr_remote_shell_v2 *zcr_remote_shell_v2)
392 {
393 	return wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2);
394 }
395 
396 /**
397  * @ingroup iface_zcr_remote_shell_v2
398  *
399  * Destroy this remote_shell object.
400  *
401  * Destroying a bound remote_shell object while there are surfaces
402  * still alive created by this remote_shell object instance is illegal
403  * and will result in a protocol error.
404  */
405 static inline void
zcr_remote_shell_v2_destroy(struct zcr_remote_shell_v2 * zcr_remote_shell_v2)406 zcr_remote_shell_v2_destroy(struct zcr_remote_shell_v2 *zcr_remote_shell_v2)
407 {
408 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
409 			 ZCR_REMOTE_SHELL_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), WL_MARSHAL_FLAG_DESTROY);
410 }
411 
412 /**
413  * @ingroup iface_zcr_remote_shell_v2
414  *
415  * This creates an remote_surface for the given surface and gives it the
416  * remote_surface role. A wl_surface can only be given a remote_surface
417  * role once. If get_remote_surface is called with a wl_surface that
418  * already has an active remote_surface associated with it, or if it had
419  * any other role, an error is raised.
420  *
421  * See the documentation of remote_surface for more details about what an
422  * remote_surface is and how it is used.
423  */
424 static inline struct zcr_remote_surface_v2 *
zcr_remote_shell_v2_get_remote_surface(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,struct wl_surface * surface,uint32_t container)425 zcr_remote_shell_v2_get_remote_surface(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, struct wl_surface *surface, uint32_t container)
426 {
427 	struct wl_proxy *id;
428 
429 	id = wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
430 			 ZCR_REMOTE_SHELL_V2_GET_REMOTE_SURFACE, &zcr_remote_surface_v2_interface, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), 0, NULL, surface, container);
431 
432 	return (struct zcr_remote_surface_v2 *) id;
433 }
434 
435 /**
436  * @ingroup iface_zcr_remote_shell_v2
437  *
438  * Creates a notification_surface for the given surface, gives it the
439  * notification_surface role and associated it with a notification id.
440  */
441 static inline struct zcr_notification_surface_v2 *
zcr_remote_shell_v2_get_notification_surface(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,struct wl_surface * surface,const char * notification_key)442 zcr_remote_shell_v2_get_notification_surface(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, struct wl_surface *surface, const char *notification_key)
443 {
444 	struct wl_proxy *id;
445 
446 	id = wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
447 			 ZCR_REMOTE_SHELL_V2_GET_NOTIFICATION_SURFACE, &zcr_notification_surface_v2_interface, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), 0, NULL, surface, notification_key);
448 
449 	return (struct zcr_notification_surface_v2 *) id;
450 }
451 
452 /**
453  * @ingroup iface_zcr_remote_shell_v2
454  *
455  * Creates an input_method_surface for the given surface, gives it
456  * the input_method_surface role.
457  */
458 static inline struct zcr_input_method_surface_v2 *
zcr_remote_shell_v2_get_input_method_surface(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,struct wl_surface * surface)459 zcr_remote_shell_v2_get_input_method_surface(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, struct wl_surface *surface)
460 {
461 	struct wl_proxy *id;
462 
463 	id = wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
464 			 ZCR_REMOTE_SHELL_V2_GET_INPUT_METHOD_SURFACE, &zcr_input_method_surface_v2_interface, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), 0, NULL, surface);
465 
466 	return (struct zcr_input_method_surface_v2 *) id;
467 }
468 
469 /**
470  * @ingroup iface_zcr_remote_shell_v2
471  *
472  * Creates an toast_surface for the given surface, gives it
473  * the toast_surface role.
474  */
475 static inline struct zcr_toast_surface_v2 *
zcr_remote_shell_v2_get_toast_surface(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,struct wl_surface * surface)476 zcr_remote_shell_v2_get_toast_surface(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, struct wl_surface *surface)
477 {
478 	struct wl_proxy *id;
479 
480 	id = wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
481 			 ZCR_REMOTE_SHELL_V2_GET_TOAST_SURFACE, &zcr_toast_surface_v2_interface, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), 0, NULL, surface);
482 
483 	return (struct zcr_toast_surface_v2 *) id;
484 }
485 
486 /**
487  * @ingroup iface_zcr_remote_shell_v2
488  *
489  * Instantiate an interface extension for the given wl_output to
490  * provide remote shell functionality.
491  */
492 static inline struct zcr_remote_output_v2 *
zcr_remote_shell_v2_get_remote_output(struct zcr_remote_shell_v2 * zcr_remote_shell_v2,struct wl_output * output)493 zcr_remote_shell_v2_get_remote_output(struct zcr_remote_shell_v2 *zcr_remote_shell_v2, struct wl_output *output)
494 {
495 	struct wl_proxy *id;
496 
497 	id = wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_shell_v2,
498 			 ZCR_REMOTE_SHELL_V2_GET_REMOTE_OUTPUT, &zcr_remote_output_v2_interface, wl_proxy_get_version((struct wl_proxy *) zcr_remote_shell_v2), 0, NULL, output);
499 
500 	return (struct zcr_remote_output_v2 *) id;
501 }
502 
503 #ifndef ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_ENUM
504 #define ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_ENUM
505 /**
506  * @ingroup iface_zcr_remote_surface_v2
507  * systemui visibility behavior
508  *
509  * Determine the visibility behavior of the system UI.
510  */
511 enum zcr_remote_surface_v2_systemui_visibility_state {
512 	/**
513 	 * system ui is visible
514 	 */
515 	ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_VISIBLE = 1,
516 	/**
517 	 * system ui autohides and is not sticky
518 	 */
519 	ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_AUTOHIDE_NON_STICKY = 2,
520 	/**
521 	 * system ui autohides and is sticky
522 	 */
523 	ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_AUTOHIDE_STICKY = 3,
524 };
525 #endif /* ZCR_REMOTE_SURFACE_V2_SYSTEMUI_VISIBILITY_STATE_ENUM */
526 
527 #ifndef ZCR_REMOTE_SURFACE_V2_STATE_TYPE_ENUM
528 #define ZCR_REMOTE_SURFACE_V2_STATE_TYPE_ENUM
529 /**
530  * @ingroup iface_zcr_remote_surface_v2
531  * state types for remote surfaces
532  *
533  * Defines common show states for shell surfaces.
534  */
535 enum zcr_remote_surface_v2_state_type {
536 	/**
537 	 * normal window state
538 	 */
539 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_NORMAL = 1,
540 	/**
541 	 * minimized window state
542 	 */
543 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_MINIMIZED = 2,
544 	/**
545 	 * maximized window state
546 	 */
547 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_MAXIMIZED = 3,
548 	/**
549 	 * fullscreen window state
550 	 */
551 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_FULLSCREEN = 4,
552 	/**
553 	 * pinned window state
554 	 */
555 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_PINNED = 5,
556 	/**
557 	 * trusted pinned window state
558 	 */
559 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_TRUSTED_PINNED = 6,
560 	/**
561 	 * moving window state
562 	 */
563 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_MOVING = 7,
564 	/**
565 	 * resizing window state
566 	 */
567 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_RESIZING = 8,
568 	/**
569 	 * left snapped window state
570 	 */
571 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_LEFT_SNAPPED = 9,
572 	/**
573 	 * right snapped window state
574 	 */
575 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_RIGHT_SNAPPED = 10,
576 	/**
577 	 * pip window state
578 	 */
579 	ZCR_REMOTE_SURFACE_V2_STATE_TYPE_PIP = 11,
580 };
581 #endif /* ZCR_REMOTE_SURFACE_V2_STATE_TYPE_ENUM */
582 
583 #ifndef ZCR_REMOTE_SURFACE_V2_ORIENTATION_ENUM
584 #define ZCR_REMOTE_SURFACE_V2_ORIENTATION_ENUM
585 /**
586  * @ingroup iface_zcr_remote_surface_v2
587  * window orientation
588  *
589  * The orientation of the window.
590  */
591 enum zcr_remote_surface_v2_orientation {
592 	/**
593 	 * portrait
594 	 */
595 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_PORTRAIT = 1,
596 	/**
597 	 * landscape
598 	 */
599 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LANDSCAPE = 2,
600 };
601 #endif /* ZCR_REMOTE_SURFACE_V2_ORIENTATION_ENUM */
602 
603 #ifndef ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_ENUM
604 #define ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_ENUM
605 /**
606  * @ingroup iface_zcr_remote_surface_v2
607  * bounds_change_reason
608  *
609  * Specifies the cause of the window bounds change event.
610  */
611 enum zcr_remote_surface_v2_bounds_change_reason {
612 	/**
613 	 * the window is being moved by drag operation
614 	 */
615 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_DRAG_MOVE = 1,
616 	/**
617 	 * the window is being resized by drag operation.
618 	 */
619 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_DRAG_RESIZE = 2,
620 	/**
621 	 * the window is resized to left snapped state
622 	 */
623 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_SNAP_TO_LEFT = 3,
624 	/**
625 	 * the window is resized to right snapped state
626 	 */
627 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_SNAP_TO_RIGHT = 4,
628 	/**
629 	 * the window bounds is moved due to other WM operations
630 	 */
631 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_MOVE = 5,
632 	/**
633 	 * the window bounds is reiszed due to other WM operations
634 	 */
635 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_RESIZE = 6,
636 	/**
637 	 * the window bounds is resized or moved for PIP
638 	 */
639 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_PIP = 7,
640 	/**
641 	 * the window bounds is resized or moved for float state
642 	 * @since 3
643 	 */
644 	ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_FLOAT = 8,
645 };
646 /**
647  * @ingroup iface_zcr_remote_surface_v2
648  */
649 #define ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_FLOAT_SINCE_VERSION 3
650 #endif /* ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGE_REASON_ENUM */
651 
652 #ifndef ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_ENUM
653 #define ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_ENUM
654 /**
655  * @ingroup iface_zcr_remote_surface_v2
656  * resize direction
657  *
658  * The resize direction for drag operation
659  */
660 enum zcr_remote_surface_v2_resize_direction {
661 	/**
662 	 * move only, no resize
663 	 */
664 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_NONE = 0,
665 	/**
666 	 * resize to the left
667 	 */
668 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_LEFT = 1,
669 	/**
670 	 * resize to the top left
671 	 */
672 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_TOPLEFT = 2,
673 	/**
674 	 * resize to the top
675 	 */
676 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_TOP = 3,
677 	/**
678 	 * resize to the top right
679 	 */
680 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_TOPRIGHT = 4,
681 	/**
682 	 * resize to the right
683 	 */
684 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_RIGHT = 5,
685 	/**
686 	 * resize to the buttom right
687 	 */
688 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_BOTTOMRIGHT = 6,
689 	/**
690 	 * resize to the bottom
691 	 */
692 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_BOTTOM = 7,
693 	/**
694 	 * resize to the bottom left
695 	 */
696 	ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_BOTTOMLEFT = 8,
697 };
698 #endif /* ZCR_REMOTE_SURFACE_V2_RESIZE_DIRECTION_ENUM */
699 
700 #ifndef ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_ENUM
701 #define ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_ENUM
702 /**
703  * @ingroup iface_zcr_remote_surface_v2
704  * frame types
705  *
706  * Frame type that can be used to decorate a surface.
707  */
708 enum zcr_remote_surface_v2_frame_type {
709 	/**
710 	 * no frame
711 	 */
712 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_NONE = 0,
713 	/**
714 	 * caption with shadow
715 	 */
716 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_NORMAL = 1,
717 	/**
718 	 * shadow only
719 	 */
720 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_SHADOW = 2,
721 	/**
722 	 * autohide frame with shadow
723 	 */
724 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_AUTOHIDE = 3,
725 	/**
726 	 * [Deprecated] overlay frame with shadow
727 	 */
728 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_OVERLAY = 4,
729 	/**
730 	 * overlap frame with the window
731 	 * @since 6
732 	 */
733 	ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_OVERLAP = 5,
734 };
735 /**
736  * @ingroup iface_zcr_remote_surface_v2
737  */
738 #define ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_OVERLAP_SINCE_VERSION 6
739 #endif /* ZCR_REMOTE_SURFACE_V2_FRAME_TYPE_ENUM */
740 
741 #ifndef ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_ENUM
742 #define ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_ENUM
743 /**
744  * @ingroup iface_zcr_remote_surface_v2
745  * frame button types
746  *
747  * The mask that represents buttons on frame.
748  */
749 enum zcr_remote_surface_v2_frame_button_type {
750 	/**
751 	 * a button to naviate backwards
752 	 */
753 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_BACK = 1,
754 	/**
755 	 * a button to minimize the window
756 	 */
757 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_MINIMIZE = 2,
758 	/**
759 	 * a button to maximize or restore
760 	 */
761 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_MAXIMIZE_RESTORE = 4,
762 	/**
763 	 * a button to activate application's menu
764 	 */
765 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_MENU = 8,
766 	/**
767 	 * a button to close the window
768 	 */
769 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_CLOSE = 16,
770 	/**
771 	 * a mask to turn the maximize_restore button to zoom button
772 	 */
773 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_ZOOM = 32,
774 	/**
775 	 * a customizable, center-aligned button
776 	 */
777 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_CENTER = 64,
778 	/**
779 	 * a button to float a window without maximize or restore
780 	 */
781 	ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_FLOAT = 128,
782 };
783 #endif /* ZCR_REMOTE_SURFACE_V2_FRAME_BUTTON_TYPE_ENUM */
784 
785 #ifndef ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_ENUM
786 #define ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_ENUM
787 /**
788  * @ingroup iface_zcr_remote_surface_v2
789  * orientation lock request for remote surfaces
790  *
791  * Defines orientation request when a remote surface is in foreground.
792  */
793 enum zcr_remote_surface_v2_orientation_lock {
794 	/**
795 	 * no orientation lock
796 	 */
797 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_NONE = 1,
798 	/**
799 	 * primary or secondary portrait
800 	 */
801 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_PORTRAIT = 2,
802 	/**
803 	 * primary or secondary landscape
804 	 */
805 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_LANDSCAPE = 3,
806 	/**
807 	 * keep current orientation
808 	 */
809 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_CURRENT = 4,
810 	/**
811 	 * primary portrait
812 	 */
813 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_PORTRAIT_PRIMARY = 5,
814 	/**
815 	 * primary landscape
816 	 */
817 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_LANDSCAPE_PRIMARY = 6,
818 	/**
819 	 * secondary portrait
820 	 */
821 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_PORTRAIT_SECONDARY = 7,
822 	/**
823 	 * secondary landscape
824 	 */
825 	ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_LANDSCAPE_SECONDARY = 8,
826 };
827 #endif /* ZCR_REMOTE_SURFACE_V2_ORIENTATION_LOCK_ENUM */
828 
829 #ifndef ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_ENUM
830 #define ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_ENUM
831 /**
832  * @ingroup iface_zcr_remote_surface_v2
833  * zoom level change
834  *
835  * Zoom level change.
836  */
837 enum zcr_remote_surface_v2_zoom_change {
838 	/**
839 	 * zoom in
840 	 */
841 	ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_IN = 0,
842 	/**
843 	 * zoom out
844 	 */
845 	ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_OUT = 1,
846 	/**
847 	 * reset zoom level
848 	 */
849 	ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_RESET = 2,
850 };
851 #endif /* ZCR_REMOTE_SURFACE_V2_ZOOM_CHANGE_ENUM */
852 
853 #ifndef ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_ENUM
854 #define ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_ENUM
855 /**
856  * @ingroup iface_zcr_remote_surface_v2
857  * resize lock type
858  *
859  * Resize lock type that can be used to put restrictions related to resizing.
860  */
861 enum zcr_remote_surface_v2_resize_lock_type {
862 	/**
863 	 * follows normal resizeable policies
864 	 */
865 	ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_NONE = 0,
866 	/**
867 	 * resizing is enabled and resize lock type is togglable
868 	 */
869 	ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_RESIZE_ENABLED_TOGGLABLE = 1,
870 	/**
871 	 * resizing is disabled and resize lock type is togglable
872 	 */
873 	ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_RESIZE_DISABLED_TOGGLABLE = 2,
874 	/**
875 	 * resizing is disabled and resize lock type is not togglable
876 	 */
877 	ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_RESIZE_DISALBED_NONTOGGLEABLE = 3,
878 };
879 #endif /* ZCR_REMOTE_SURFACE_V2_RESIZE_LOCK_TYPE_ENUM */
880 
881 /**
882  * @ingroup iface_zcr_remote_surface_v2
883  * @struct zcr_remote_surface_v2_listener
884  */
885 struct zcr_remote_surface_v2_listener {
886 	/**
887 	 * surface wants to be closed
888 	 *
889 	 * The close event is sent by the compositor when the user wants
890 	 * the surface to be closed. This should be equivalent to the user
891 	 * clicking the close button in client-side decorations, if your
892 	 * application has any...
893 	 *
894 	 * This is only a request that the user intends to close your
895 	 * window. The client may choose to ignore this request, or show a
896 	 * dialog to ask the user to save their data...
897 	 */
898 	void (*close)(void *data,
899 		      struct zcr_remote_surface_v2 *zcr_remote_surface_v2);
900 	/**
901 	 * surface state type changed
902 	 *
903 	 * The state_type_changed event is sent by the compositor when
904 	 * the surface state changed.
905 	 *
906 	 * This is an event to notify that the window state changed in
907 	 * compositor. The state change may be triggered by a client's
908 	 * request, or some user action directly handled by the compositor.
909 	 * The client may choose to ignore this event.
910 	 */
911 	void (*state_type_changed)(void *data,
912 				   struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
913 				   uint32_t state_type);
914 	/**
915 	 * announce window geometry commit
916 	 *
917 	 * Notify the client of committed window geometry.
918 	 *
919 	 * The compositor sends this event when it commits window geometry.
920 	 * The client may use this information to convert coordinates of
921 	 * input events using the latest committed geometry.
922 	 */
923 	void (*window_geometry_changed)(void *data,
924 					struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
925 					int32_t x,
926 					int32_t y,
927 					int32_t width,
928 					int32_t height);
929 	/**
930 	 * The compositor requested to change the bounds
931 	 *
932 	 * The compositor requested to change its bounds.
933 	 * "bounds_change_reason" specifies the cause of the bounds change.
934 	 * The client may apply the different move/resize strategy
935 	 * depending on the reason.
936 	 *
937 	 * "display_id_hi", "display_id_lo" specifies in which workspace
938 	 * the surface should live in.
939 	 *
940 	 * The client responds with set_bounds_in_output request, with the
941 	 * bounds it is resized to (this may be different from the bounds
942 	 * requested).
943 	 *
944 	 * The client may ignore move request depending on the state, e.g,
945 	 * if it becomes resizable or other constrants.
946 	 */
947 	void (*bounds_changed)(void *data,
948 			       struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
949 			       uint32_t display_id_hi,
950 			       uint32_t display_id_lo,
951 			       int32_t x,
952 			       int32_t y,
953 			       int32_t width,
954 			       int32_t height,
955 			       uint32_t bounds_change_reason);
956 	/**
957 	 * Notifies that a drag to move/resize started.
958 	 *
959 	 * Notifies a client that the compositor started drag operation.
960 	 * "direction" specifies which direction it is being resized.
961 	 * "none" direction means just move but not resize.
962 	 *
963 	 * This will be followed by series of the "bounds_changed" event
964 	 * with "drag_resize" or "drag_move" reasons to update the window
965 	 * bounds druing the drag operation.
966 	 */
967 	void (*drag_started)(void *data,
968 			     struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
969 			     uint32_t direction);
970 	/**
971 	 * Notifies that a drag operation has finished.
972 	 *
973 	 * Called when the drag operation is finished. "x" and "y"
974 	 * specifies the position of the pointer device used to drag.
975 	 * "canceled" is true if the drag operation is aborted during drag
976 	 * (e.g. by capture change or user action.)
977 	 * @param canceled true if the operation was canceled
978 	 */
979 	void (*drag_finished)(void *data,
980 			      struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
981 			      int32_t x,
982 			      int32_t y,
983 			      int32_t canceled);
984 	/**
985 	 * change zoom level
986 	 *
987 	 * Request application zoom level change.
988 	 */
989 	void (*change_zoom_level)(void *data,
990 				  struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
991 				  int32_t change);
992 	/**
993 	 * The compositor requested to change the bounds
994 	 *
995 	 * The compositor requested to change its bounds.
996 	 * "bounds_change_reason" specifies the cause of the bounds change.
997 	 * The client may apply the different move/resize strategy
998 	 * depending on the reason.
999 	 *
1000 	 * The "output" specifies the wayland output in which the suface
1001 	 * should live.
1002 	 *
1003 	 * The client responds with set_bounds_in_output request, with the
1004 	 * bounds it is resized to (this may be different from the bounds
1005 	 * requested).
1006 	 *
1007 	 * The client may ignore move request depending on the state, e.g,
1008 	 * if it becomes resizable or other constrants.
1009 	 */
1010 	void (*bounds_changed_in_output)(void *data,
1011 					 struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
1012 					 struct wl_output *output,
1013 					 int32_t x,
1014 					 int32_t y,
1015 					 int32_t width,
1016 					 int32_t height,
1017 					 uint32_t bounds_change_reason);
1018 };
1019 
1020 /**
1021  * @ingroup iface_zcr_remote_surface_v2
1022  */
1023 static inline int
zcr_remote_surface_v2_add_listener(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,const struct zcr_remote_surface_v2_listener * listener,void * data)1024 zcr_remote_surface_v2_add_listener(struct zcr_remote_surface_v2 *zcr_remote_surface_v2,
1025 				   const struct zcr_remote_surface_v2_listener *listener, void *data)
1026 {
1027 	return wl_proxy_add_listener((struct wl_proxy *) zcr_remote_surface_v2,
1028 				     (void (**)(void)) listener, data);
1029 }
1030 
1031 #define ZCR_REMOTE_SURFACE_V2_DESTROY 0
1032 #define ZCR_REMOTE_SURFACE_V2_SET_APP_ID 1
1033 #define ZCR_REMOTE_SURFACE_V2_SET_TITLE 2
1034 #define ZCR_REMOTE_SURFACE_V2_SET_TOP_INSET 3
1035 #define ZCR_REMOTE_SURFACE_V2_MAXIMIZE 4
1036 #define ZCR_REMOTE_SURFACE_V2_MINIMIZE 5
1037 #define ZCR_REMOTE_SURFACE_V2_RESTORE 6
1038 #define ZCR_REMOTE_SURFACE_V2_FULLSCREEN 7
1039 #define ZCR_REMOTE_SURFACE_V2_PIN 8
1040 #define ZCR_REMOTE_SURFACE_V2_UNPIN 9
1041 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_MODAL 10
1042 #define ZCR_REMOTE_SURFACE_V2_UNSET_SYSTEM_MODAL 11
1043 #define ZCR_REMOTE_SURFACE_V2_SET_RECTANGULAR_SURFACE_SHADOW 12
1044 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEMUI_VISIBILITY 13
1045 #define ZCR_REMOTE_SURFACE_V2_SET_ALWAYS_ON_TOP 14
1046 #define ZCR_REMOTE_SURFACE_V2_UNSET_ALWAYS_ON_TOP 15
1047 #define ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION 16
1048 #define ZCR_REMOTE_SURFACE_V2_START_MOVE 17
1049 #define ZCR_REMOTE_SURFACE_V2_SET_CAN_MAXIMIZE 18
1050 #define ZCR_REMOTE_SURFACE_V2_UNSET_CAN_MAXIMIZE 19
1051 #define ZCR_REMOTE_SURFACE_V2_SET_MIN_SIZE 20
1052 #define ZCR_REMOTE_SURFACE_V2_SET_MAX_SIZE 21
1053 #define ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_LEFT 22
1054 #define ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_RIGHT 23
1055 #define ZCR_REMOTE_SURFACE_V2_START_RESIZE 24
1056 #define ZCR_REMOTE_SURFACE_V2_SET_FRAME 25
1057 #define ZCR_REMOTE_SURFACE_V2_SET_FRAME_BUTTONS 26
1058 #define ZCR_REMOTE_SURFACE_V2_SET_EXTRA_TITLE 27
1059 #define ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION_LOCK 28
1060 #define ZCR_REMOTE_SURFACE_V2_PIP 29
1061 #define ZCR_REMOTE_SURFACE_V2_SET_ASPECT_RATIO 30
1062 #define ZCR_REMOTE_SURFACE_V2_SET_ACCESSIBILITY_ID 31
1063 #define ZCR_REMOTE_SURFACE_V2_SET_PIP_ORIGINAL_WINDOW 32
1064 #define ZCR_REMOTE_SURFACE_V2_UNSET_PIP_ORIGINAL_WINDOW 33
1065 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_GESTURE_EXCLUSION 34
1066 #define ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK 35
1067 #define ZCR_REMOTE_SURFACE_V2_UNSET_RESIZE_LOCK 36
1068 #define ZCR_REMOTE_SURFACE_V2_SET_BOUNDS_IN_OUTPUT 37
1069 #define ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK_TYPE 38
1070 #define ZCR_REMOTE_SURFACE_V2_SET_FLOAT 39
1071 #define ZCR_REMOTE_SURFACE_V2_SET_SCALE_FACTOR 40
1072 #define ZCR_REMOTE_SURFACE_V2_SET_WINDOW_CORNER_RADII 41
1073 #define ZCR_REMOTE_SURFACE_V2_SET_SHADOW_CORNER_RADII 42
1074 
1075 /**
1076  * @ingroup iface_zcr_remote_surface_v2
1077  */
1078 #define ZCR_REMOTE_SURFACE_V2_CLOSE_SINCE_VERSION 1
1079 /**
1080  * @ingroup iface_zcr_remote_surface_v2
1081  */
1082 #define ZCR_REMOTE_SURFACE_V2_STATE_TYPE_CHANGED_SINCE_VERSION 1
1083 /**
1084  * @ingroup iface_zcr_remote_surface_v2
1085  */
1086 #define ZCR_REMOTE_SURFACE_V2_WINDOW_GEOMETRY_CHANGED_SINCE_VERSION 1
1087 /**
1088  * @ingroup iface_zcr_remote_surface_v2
1089  */
1090 #define ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGED_SINCE_VERSION 1
1091 /**
1092  * @ingroup iface_zcr_remote_surface_v2
1093  */
1094 #define ZCR_REMOTE_SURFACE_V2_DRAG_STARTED_SINCE_VERSION 1
1095 /**
1096  * @ingroup iface_zcr_remote_surface_v2
1097  */
1098 #define ZCR_REMOTE_SURFACE_V2_DRAG_FINISHED_SINCE_VERSION 1
1099 /**
1100  * @ingroup iface_zcr_remote_surface_v2
1101  */
1102 #define ZCR_REMOTE_SURFACE_V2_CHANGE_ZOOM_LEVEL_SINCE_VERSION 1
1103 /**
1104  * @ingroup iface_zcr_remote_surface_v2
1105  */
1106 #define ZCR_REMOTE_SURFACE_V2_BOUNDS_CHANGED_IN_OUTPUT_SINCE_VERSION 1
1107 
1108 /**
1109  * @ingroup iface_zcr_remote_surface_v2
1110  */
1111 #define ZCR_REMOTE_SURFACE_V2_DESTROY_SINCE_VERSION 1
1112 /**
1113  * @ingroup iface_zcr_remote_surface_v2
1114  */
1115 #define ZCR_REMOTE_SURFACE_V2_SET_APP_ID_SINCE_VERSION 1
1116 /**
1117  * @ingroup iface_zcr_remote_surface_v2
1118  */
1119 #define ZCR_REMOTE_SURFACE_V2_SET_TITLE_SINCE_VERSION 1
1120 /**
1121  * @ingroup iface_zcr_remote_surface_v2
1122  */
1123 #define ZCR_REMOTE_SURFACE_V2_SET_TOP_INSET_SINCE_VERSION 1
1124 /**
1125  * @ingroup iface_zcr_remote_surface_v2
1126  */
1127 #define ZCR_REMOTE_SURFACE_V2_MAXIMIZE_SINCE_VERSION 1
1128 /**
1129  * @ingroup iface_zcr_remote_surface_v2
1130  */
1131 #define ZCR_REMOTE_SURFACE_V2_MINIMIZE_SINCE_VERSION 1
1132 /**
1133  * @ingroup iface_zcr_remote_surface_v2
1134  */
1135 #define ZCR_REMOTE_SURFACE_V2_RESTORE_SINCE_VERSION 1
1136 /**
1137  * @ingroup iface_zcr_remote_surface_v2
1138  */
1139 #define ZCR_REMOTE_SURFACE_V2_FULLSCREEN_SINCE_VERSION 1
1140 /**
1141  * @ingroup iface_zcr_remote_surface_v2
1142  */
1143 #define ZCR_REMOTE_SURFACE_V2_PIN_SINCE_VERSION 1
1144 /**
1145  * @ingroup iface_zcr_remote_surface_v2
1146  */
1147 #define ZCR_REMOTE_SURFACE_V2_UNPIN_SINCE_VERSION 1
1148 /**
1149  * @ingroup iface_zcr_remote_surface_v2
1150  */
1151 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_MODAL_SINCE_VERSION 1
1152 /**
1153  * @ingroup iface_zcr_remote_surface_v2
1154  */
1155 #define ZCR_REMOTE_SURFACE_V2_UNSET_SYSTEM_MODAL_SINCE_VERSION 1
1156 /**
1157  * @ingroup iface_zcr_remote_surface_v2
1158  */
1159 #define ZCR_REMOTE_SURFACE_V2_SET_RECTANGULAR_SURFACE_SHADOW_SINCE_VERSION 1
1160 /**
1161  * @ingroup iface_zcr_remote_surface_v2
1162  */
1163 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEMUI_VISIBILITY_SINCE_VERSION 1
1164 /**
1165  * @ingroup iface_zcr_remote_surface_v2
1166  */
1167 #define ZCR_REMOTE_SURFACE_V2_SET_ALWAYS_ON_TOP_SINCE_VERSION 1
1168 /**
1169  * @ingroup iface_zcr_remote_surface_v2
1170  */
1171 #define ZCR_REMOTE_SURFACE_V2_UNSET_ALWAYS_ON_TOP_SINCE_VERSION 1
1172 /**
1173  * @ingroup iface_zcr_remote_surface_v2
1174  */
1175 #define ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION_SINCE_VERSION 1
1176 /**
1177  * @ingroup iface_zcr_remote_surface_v2
1178  */
1179 #define ZCR_REMOTE_SURFACE_V2_START_MOVE_SINCE_VERSION 1
1180 /**
1181  * @ingroup iface_zcr_remote_surface_v2
1182  */
1183 #define ZCR_REMOTE_SURFACE_V2_SET_CAN_MAXIMIZE_SINCE_VERSION 1
1184 /**
1185  * @ingroup iface_zcr_remote_surface_v2
1186  */
1187 #define ZCR_REMOTE_SURFACE_V2_UNSET_CAN_MAXIMIZE_SINCE_VERSION 1
1188 /**
1189  * @ingroup iface_zcr_remote_surface_v2
1190  */
1191 #define ZCR_REMOTE_SURFACE_V2_SET_MIN_SIZE_SINCE_VERSION 1
1192 /**
1193  * @ingroup iface_zcr_remote_surface_v2
1194  */
1195 #define ZCR_REMOTE_SURFACE_V2_SET_MAX_SIZE_SINCE_VERSION 1
1196 /**
1197  * @ingroup iface_zcr_remote_surface_v2
1198  */
1199 #define ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_LEFT_SINCE_VERSION 1
1200 /**
1201  * @ingroup iface_zcr_remote_surface_v2
1202  */
1203 #define ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_RIGHT_SINCE_VERSION 1
1204 /**
1205  * @ingroup iface_zcr_remote_surface_v2
1206  */
1207 #define ZCR_REMOTE_SURFACE_V2_START_RESIZE_SINCE_VERSION 1
1208 /**
1209  * @ingroup iface_zcr_remote_surface_v2
1210  */
1211 #define ZCR_REMOTE_SURFACE_V2_SET_FRAME_SINCE_VERSION 1
1212 /**
1213  * @ingroup iface_zcr_remote_surface_v2
1214  */
1215 #define ZCR_REMOTE_SURFACE_V2_SET_FRAME_BUTTONS_SINCE_VERSION 1
1216 /**
1217  * @ingroup iface_zcr_remote_surface_v2
1218  */
1219 #define ZCR_REMOTE_SURFACE_V2_SET_EXTRA_TITLE_SINCE_VERSION 1
1220 /**
1221  * @ingroup iface_zcr_remote_surface_v2
1222  */
1223 #define ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION_LOCK_SINCE_VERSION 1
1224 /**
1225  * @ingroup iface_zcr_remote_surface_v2
1226  */
1227 #define ZCR_REMOTE_SURFACE_V2_PIP_SINCE_VERSION 1
1228 /**
1229  * @ingroup iface_zcr_remote_surface_v2
1230  */
1231 #define ZCR_REMOTE_SURFACE_V2_SET_ASPECT_RATIO_SINCE_VERSION 1
1232 /**
1233  * @ingroup iface_zcr_remote_surface_v2
1234  */
1235 #define ZCR_REMOTE_SURFACE_V2_SET_ACCESSIBILITY_ID_SINCE_VERSION 1
1236 /**
1237  * @ingroup iface_zcr_remote_surface_v2
1238  */
1239 #define ZCR_REMOTE_SURFACE_V2_SET_PIP_ORIGINAL_WINDOW_SINCE_VERSION 1
1240 /**
1241  * @ingroup iface_zcr_remote_surface_v2
1242  */
1243 #define ZCR_REMOTE_SURFACE_V2_UNSET_PIP_ORIGINAL_WINDOW_SINCE_VERSION 1
1244 /**
1245  * @ingroup iface_zcr_remote_surface_v2
1246  */
1247 #define ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_GESTURE_EXCLUSION_SINCE_VERSION 1
1248 /**
1249  * @ingroup iface_zcr_remote_surface_v2
1250  */
1251 #define ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK_SINCE_VERSION 1
1252 /**
1253  * @ingroup iface_zcr_remote_surface_v2
1254  */
1255 #define ZCR_REMOTE_SURFACE_V2_UNSET_RESIZE_LOCK_SINCE_VERSION 1
1256 /**
1257  * @ingroup iface_zcr_remote_surface_v2
1258  */
1259 #define ZCR_REMOTE_SURFACE_V2_SET_BOUNDS_IN_OUTPUT_SINCE_VERSION 1
1260 /**
1261  * @ingroup iface_zcr_remote_surface_v2
1262  */
1263 #define ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK_TYPE_SINCE_VERSION 2
1264 /**
1265  * @ingroup iface_zcr_remote_surface_v2
1266  */
1267 #define ZCR_REMOTE_SURFACE_V2_SET_FLOAT_SINCE_VERSION 3
1268 /**
1269  * @ingroup iface_zcr_remote_surface_v2
1270  */
1271 #define ZCR_REMOTE_SURFACE_V2_SET_SCALE_FACTOR_SINCE_VERSION 4
1272 /**
1273  * @ingroup iface_zcr_remote_surface_v2
1274  */
1275 #define ZCR_REMOTE_SURFACE_V2_SET_WINDOW_CORNER_RADII_SINCE_VERSION 5
1276 /**
1277  * @ingroup iface_zcr_remote_surface_v2
1278  */
1279 #define ZCR_REMOTE_SURFACE_V2_SET_SHADOW_CORNER_RADII_SINCE_VERSION 6
1280 
1281 /** @ingroup iface_zcr_remote_surface_v2 */
1282 static inline void
zcr_remote_surface_v2_set_user_data(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,void * user_data)1283 zcr_remote_surface_v2_set_user_data(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, void *user_data)
1284 {
1285 	wl_proxy_set_user_data((struct wl_proxy *) zcr_remote_surface_v2, user_data);
1286 }
1287 
1288 /** @ingroup iface_zcr_remote_surface_v2 */
1289 static inline void *
zcr_remote_surface_v2_get_user_data(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1290 zcr_remote_surface_v2_get_user_data(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1291 {
1292 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_remote_surface_v2);
1293 }
1294 
1295 static inline uint32_t
zcr_remote_surface_v2_get_version(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1296 zcr_remote_surface_v2_get_version(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1297 {
1298 	return wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2);
1299 }
1300 
1301 /**
1302  * @ingroup iface_zcr_remote_surface_v2
1303  *
1304  * Unmap and destroy the window. The window will be effectively
1305  * hidden from the user's point of view, and all state will be lost.
1306  */
1307 static inline void
zcr_remote_surface_v2_destroy(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1308 zcr_remote_surface_v2_destroy(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1309 {
1310 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1311 			 ZCR_REMOTE_SURFACE_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), WL_MARSHAL_FLAG_DESTROY);
1312 }
1313 
1314 /**
1315  * @ingroup iface_zcr_remote_surface_v2
1316  *
1317  * Set an application identifier for the surface.
1318  */
1319 static inline void
zcr_remote_surface_v2_set_app_id(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,const char * app_id)1320 zcr_remote_surface_v2_set_app_id(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, const char *app_id)
1321 {
1322 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1323 			 ZCR_REMOTE_SURFACE_V2_SET_APP_ID, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, app_id);
1324 }
1325 
1326 /**
1327  * @ingroup iface_zcr_remote_surface_v2
1328  *
1329  * Set a short title for the surface.
1330  *
1331  * This string may be used to identify the surface in a task bar,
1332  * window list, or other user interface elements provided by the
1333  * compositor.
1334  *
1335  * The string must be encoded in UTF-8.
1336  */
1337 static inline void
zcr_remote_surface_v2_set_title(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,const char * title)1338 zcr_remote_surface_v2_set_title(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, const char *title)
1339 {
1340 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1341 			 ZCR_REMOTE_SURFACE_V2_SET_TITLE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, title);
1342 }
1343 
1344 /**
1345  * @ingroup iface_zcr_remote_surface_v2
1346  *
1347  * Set distance from the top of the surface to the contents.
1348  *
1349  * This distance typically represents the size of the window caption.
1350  */
1351 static inline void
zcr_remote_surface_v2_set_top_inset(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t height)1352 zcr_remote_surface_v2_set_top_inset(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t height)
1353 {
1354 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1355 			 ZCR_REMOTE_SURFACE_V2_SET_TOP_INSET, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, height);
1356 }
1357 
1358 /**
1359  * @ingroup iface_zcr_remote_surface_v2
1360  *
1361  * Request that surface is maximized. The window geometry will be updated
1362  * to whatever the compositor finds appropriate for a maximized window.
1363  *
1364  * This is only a request that the window should be maximized. The
1365  * compositor may choose to ignore this request. The client should
1366  * listen to state_type_changed events to determine if the window was
1367  * maximized or not.
1368  */
1369 static inline void
zcr_remote_surface_v2_maximize(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1370 zcr_remote_surface_v2_maximize(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1371 {
1372 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1373 			 ZCR_REMOTE_SURFACE_V2_MAXIMIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1374 }
1375 
1376 /**
1377  * @ingroup iface_zcr_remote_surface_v2
1378  *
1379  * Request that surface is minimized.
1380  *
1381  * This is only a request that the window should be minimized. The
1382  * compositor may choose to ignore this request. The client should
1383  * listen to state_type_changed events to determine if the window was
1384  * minimized or not.
1385  */
1386 static inline void
zcr_remote_surface_v2_minimize(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1387 zcr_remote_surface_v2_minimize(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1388 {
1389 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1390 			 ZCR_REMOTE_SURFACE_V2_MINIMIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1391 }
1392 
1393 /**
1394  * @ingroup iface_zcr_remote_surface_v2
1395  *
1396  * Request that surface is restored. This restores the window geometry
1397  * to what it was before the window was minimized, maximized or made
1398  * fullscreen.
1399  *
1400  * This is only a request that the window should be restored. The
1401  * compositor may choose to ignore this request. The client should
1402  * listen to state_type_changed events to determine if the window was restored
1403  * or not.
1404  */
1405 static inline void
zcr_remote_surface_v2_restore(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1406 zcr_remote_surface_v2_restore(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1407 {
1408 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1409 			 ZCR_REMOTE_SURFACE_V2_RESTORE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1410 }
1411 
1412 /**
1413  * @ingroup iface_zcr_remote_surface_v2
1414  *
1415  * Request that surface is made fullscreen.
1416  *
1417  * This is only a request that the window should be made fullscreen.
1418  * The compositor may choose to ignore this request. The client should
1419  * listen to set_fullscreen events to determine if the window was
1420  * made fullscreen or not.
1421  */
1422 static inline void
zcr_remote_surface_v2_fullscreen(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1423 zcr_remote_surface_v2_fullscreen(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1424 {
1425 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1426 			 ZCR_REMOTE_SURFACE_V2_FULLSCREEN, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1427 }
1428 
1429 /**
1430  * @ingroup iface_zcr_remote_surface_v2
1431  *
1432  * Request that surface is pinned.
1433  *
1434  * This is only a request that the window should be pinned.
1435  * The compositor may choose to ignore this request. The client should
1436  * listen to state_type_changed events to determine if the window was
1437  * pinned or not. If trusted flag is non-zero, the app can prevent users
1438  * from exiting the pinned mode.
1439  */
1440 static inline void
zcr_remote_surface_v2_pin(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t trusted)1441 zcr_remote_surface_v2_pin(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t trusted)
1442 {
1443 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1444 			 ZCR_REMOTE_SURFACE_V2_PIN, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, trusted);
1445 }
1446 
1447 /**
1448  * @ingroup iface_zcr_remote_surface_v2
1449  *
1450  * Request that surface is unpinned.
1451  *
1452  * This is only a request that the window should be unpinned.
1453  * The compositor may choose to ignore this request. The client should
1454  * listen to state_type_changed events to determine if the window was
1455  * unpinned or not.
1456  */
1457 static inline void
zcr_remote_surface_v2_unpin(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1458 zcr_remote_surface_v2_unpin(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1459 {
1460 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1461 			 ZCR_REMOTE_SURFACE_V2_UNPIN, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1462 }
1463 
1464 /**
1465  * @ingroup iface_zcr_remote_surface_v2
1466  *
1467  * Suggests a surface should become system modal.
1468  */
1469 static inline void
zcr_remote_surface_v2_set_system_modal(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1470 zcr_remote_surface_v2_set_system_modal(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1471 {
1472 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1473 			 ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_MODAL, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1474 }
1475 
1476 /**
1477  * @ingroup iface_zcr_remote_surface_v2
1478  *
1479  * Suggests a surface should become non system modal.
1480  */
1481 static inline void
zcr_remote_surface_v2_unset_system_modal(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1482 zcr_remote_surface_v2_unset_system_modal(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1483 {
1484 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1485 			 ZCR_REMOTE_SURFACE_V2_UNSET_SYSTEM_MODAL, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1486 }
1487 
1488 /**
1489  * @ingroup iface_zcr_remote_surface_v2
1490  *
1491  * Request that surface needs a rectangular shadow.
1492  *
1493  * This is only a request that the surface should have a rectangular
1494  * shadow. The compositor may choose to ignore this request.
1495  *
1496  * The arguments are given in the remote surface coordinate space and
1497  * specifies inner bounds of the shadow. Specifying zero width and height
1498  * will disable the shadow.
1499  */
1500 static inline void
zcr_remote_surface_v2_set_rectangular_surface_shadow(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t x,int32_t y,int32_t width,int32_t height)1501 zcr_remote_surface_v2_set_rectangular_surface_shadow(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t x, int32_t y, int32_t width, int32_t height)
1502 {
1503 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1504 			 ZCR_REMOTE_SURFACE_V2_SET_RECTANGULAR_SURFACE_SHADOW, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, x, y, width, height);
1505 }
1506 
1507 /**
1508  * @ingroup iface_zcr_remote_surface_v2
1509  *
1510  * Requests how the surface will change the visibility of the system UI when it is made active.
1511  */
1512 static inline void
zcr_remote_surface_v2_set_systemui_visibility(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t visibility)1513 zcr_remote_surface_v2_set_systemui_visibility(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t visibility)
1514 {
1515 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1516 			 ZCR_REMOTE_SURFACE_V2_SET_SYSTEMUI_VISIBILITY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, visibility);
1517 }
1518 
1519 /**
1520  * @ingroup iface_zcr_remote_surface_v2
1521  *
1522  * Request that surface is made to be always on top.
1523  *
1524  * This is only a request that the window should be always on top.
1525  * The compositor may choose to ignore this request.
1526  *
1527  */
1528 static inline void
zcr_remote_surface_v2_set_always_on_top(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1529 zcr_remote_surface_v2_set_always_on_top(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1530 {
1531 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1532 			 ZCR_REMOTE_SURFACE_V2_SET_ALWAYS_ON_TOP, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1533 }
1534 
1535 /**
1536  * @ingroup iface_zcr_remote_surface_v2
1537  *
1538  * Request that surface is made to be not always on top.
1539  *
1540  * This is only a request that the window should be not always on top.
1541  * The compositor may choose to ignore this request.
1542  */
1543 static inline void
zcr_remote_surface_v2_unset_always_on_top(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1544 zcr_remote_surface_v2_unset_always_on_top(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1545 {
1546 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1547 			 ZCR_REMOTE_SURFACE_V2_UNSET_ALWAYS_ON_TOP, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1548 }
1549 
1550 /**
1551  * @ingroup iface_zcr_remote_surface_v2
1552  *
1553  * Set an orientation for the surface.
1554  */
1555 static inline void
zcr_remote_surface_v2_set_orientation(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t orientation)1556 zcr_remote_surface_v2_set_orientation(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t orientation)
1557 {
1558 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1559 			 ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, orientation);
1560 }
1561 
1562 /**
1563  * @ingroup iface_zcr_remote_surface_v2
1564  *
1565  * Request an interactive, user-driven move of the surface. "x"
1566  * and "y" specifies the starting point of the pointer device
1567  * that initiated the move.
1568  *
1569  * The compositor responds to this request with a drag_started
1570  * event with "none" direction.  Please see drag_started event
1571  * for more details.
1572  *
1573  * The compositor may ignore move requests depending on the state of the
1574  * surface, e.g. fullscreen or maximized.
1575  */
1576 static inline void
zcr_remote_surface_v2_start_move(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t x,int32_t y)1577 zcr_remote_surface_v2_start_move(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t x, int32_t y)
1578 {
1579 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1580 			 ZCR_REMOTE_SURFACE_V2_START_MOVE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, x, y);
1581 }
1582 
1583 /**
1584  * @ingroup iface_zcr_remote_surface_v2
1585  *
1586  * Request that surface can be in maximzied state.
1587  */
1588 static inline void
zcr_remote_surface_v2_set_can_maximize(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1589 zcr_remote_surface_v2_set_can_maximize(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1590 {
1591 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1592 			 ZCR_REMOTE_SURFACE_V2_SET_CAN_MAXIMIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1593 }
1594 
1595 /**
1596  * @ingroup iface_zcr_remote_surface_v2
1597  *
1598  * Request that surface can not be in maximzied state.
1599  */
1600 static inline void
zcr_remote_surface_v2_unset_can_maximize(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1601 zcr_remote_surface_v2_unset_can_maximize(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1602 {
1603 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1604 			 ZCR_REMOTE_SURFACE_V2_UNSET_CAN_MAXIMIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1605 }
1606 
1607 /**
1608  * @ingroup iface_zcr_remote_surface_v2
1609  *
1610  * Set a minimum size of the surface.
1611  *
1612  * Values set in this way are double-buffered. They will get
1613  * applied on the next commit.
1614  */
1615 static inline void
zcr_remote_surface_v2_set_min_size(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t width,int32_t height)1616 zcr_remote_surface_v2_set_min_size(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t width, int32_t height)
1617 {
1618 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1619 			 ZCR_REMOTE_SURFACE_V2_SET_MIN_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, width, height);
1620 }
1621 
1622 /**
1623  * @ingroup iface_zcr_remote_surface_v2
1624  *
1625  * Set a maximum size of the surface.
1626  *
1627  * Values set in this way are double-buffered. They will get
1628  * applied on the next commit.
1629  *
1630  * Setting the same size as minimum size makes the surface
1631  * unresizable.
1632  */
1633 static inline void
zcr_remote_surface_v2_set_max_size(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t width,int32_t height)1634 zcr_remote_surface_v2_set_max_size(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t width, int32_t height)
1635 {
1636 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1637 			 ZCR_REMOTE_SURFACE_V2_SET_MAX_SIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, width, height);
1638 }
1639 
1640 /**
1641  * @ingroup iface_zcr_remote_surface_v2
1642  *
1643  * Request that surface is snapped to left.
1644  */
1645 static inline void
zcr_remote_surface_v2_set_snapped_to_left(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1646 zcr_remote_surface_v2_set_snapped_to_left(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1647 {
1648 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1649 			 ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_LEFT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1650 }
1651 
1652 /**
1653  * @ingroup iface_zcr_remote_surface_v2
1654  *
1655  * Request that surface is snapped to right.
1656  */
1657 static inline void
zcr_remote_surface_v2_set_snapped_to_right(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1658 zcr_remote_surface_v2_set_snapped_to_right(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1659 {
1660 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1661 			 ZCR_REMOTE_SURFACE_V2_SET_SNAPPED_TO_RIGHT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1662 }
1663 
1664 /**
1665  * @ingroup iface_zcr_remote_surface_v2
1666  *
1667  * Request to start an interactive, user-driven resize of the surface.
1668  * "x" and "y" specifies the starting point of the pointer device
1669  * that initiated the reize.
1670  *
1671  * The compositor responds to this request with a "drag_started"
1672  * event, followed by "bounds_changed" events, and ends the
1673  * resize operation with a "drag_finhsed" event. The compositor
1674  * determines the new bounds using the resize_direction and the
1675  * pointer event location.
1676  *
1677  * The compositor may ignore resize requests depending on the state of the
1678  * surface, e.g. fullscreen or maximized, or no drag event is in pregress.
1679  */
1680 static inline void
zcr_remote_surface_v2_start_resize(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t resize_direction,int32_t x,int32_t y)1681 zcr_remote_surface_v2_start_resize(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t resize_direction, int32_t x, int32_t y)
1682 {
1683 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1684 			 ZCR_REMOTE_SURFACE_V2_START_RESIZE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, resize_direction, x, y);
1685 }
1686 
1687 /**
1688  * @ingroup iface_zcr_remote_surface_v2
1689  *
1690  * Enables compositor side frame decoration. |type|
1691  * specifies the type of frame to use for the surface.
1692  */
1693 static inline void
zcr_remote_surface_v2_set_frame(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t type)1694 zcr_remote_surface_v2_set_frame(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t type)
1695 {
1696 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1697 			 ZCR_REMOTE_SURFACE_V2_SET_FRAME, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, type);
1698 }
1699 
1700 /**
1701  * @ingroup iface_zcr_remote_surface_v2
1702  *
1703  * Updates the frame's button state. |visible_buttons| and |enabled_buttons|
1704  * are the union of button mask defined in |frame_button_type| enum.
1705  *
1706  * The mask present in |enabled_buttons| but not in |visible_buttons| will
1707  * be ignored.
1708  */
1709 static inline void
zcr_remote_surface_v2_set_frame_buttons(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t visible_buttons,uint32_t enabled_buttons)1710 zcr_remote_surface_v2_set_frame_buttons(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t visible_buttons, uint32_t enabled_buttons)
1711 {
1712 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1713 			 ZCR_REMOTE_SURFACE_V2_SET_FRAME_BUTTONS, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, visible_buttons, enabled_buttons);
1714 }
1715 
1716 /**
1717  * @ingroup iface_zcr_remote_surface_v2
1718  *
1719  * The extra informational string about the surface. This can be
1720  * used to show the debug information in the title bar, or log
1721  * messages.
1722  *
1723  * This is different from "set_title" which is used to identify
1724  * the surface.
1725  *
1726  * The string must be encoded in UTF-8.
1727  */
1728 static inline void
zcr_remote_surface_v2_set_extra_title(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,const char * extra_title)1729 zcr_remote_surface_v2_set_extra_title(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, const char *extra_title)
1730 {
1731 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1732 			 ZCR_REMOTE_SURFACE_V2_SET_EXTRA_TITLE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, extra_title);
1733 }
1734 
1735 /**
1736  * @ingroup iface_zcr_remote_surface_v2
1737  *
1738  * Request a specific orientation behavior when this surface is in foreground.
1739  */
1740 static inline void
zcr_remote_surface_v2_set_orientation_lock(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t orientation_lock)1741 zcr_remote_surface_v2_set_orientation_lock(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t orientation_lock)
1742 {
1743 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1744 			 ZCR_REMOTE_SURFACE_V2_SET_ORIENTATION_LOCK, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, orientation_lock);
1745 }
1746 
1747 /**
1748  * @ingroup iface_zcr_remote_surface_v2
1749  *
1750  * Request that surface is set to Picture-in-Picture (PIP).
1751  */
1752 static inline void
zcr_remote_surface_v2_pip(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1753 zcr_remote_surface_v2_pip(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1754 {
1755 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1756 			 ZCR_REMOTE_SURFACE_V2_PIP, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1757 }
1758 
1759 /**
1760  * @ingroup iface_zcr_remote_surface_v2
1761  *
1762  * Set an aspect ratio of the surface.
1763  *
1764  * Values set in this way are double-buffered. They will get
1765  * applied on the next commit.
1766  *
1767  * The ratio of the values is used for the ratio of width to height of the
1768  * surface. The size of surface is restricted to the ratio. If any value is
1769  * zero, the restriction on aspect ratio is unset.
1770  */
1771 static inline void
zcr_remote_surface_v2_set_aspect_ratio(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t width,int32_t height)1772 zcr_remote_surface_v2_set_aspect_ratio(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t width, int32_t height)
1773 {
1774 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1775 			 ZCR_REMOTE_SURFACE_V2_SET_ASPECT_RATIO, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, width, height);
1776 }
1777 
1778 /**
1779  * @ingroup iface_zcr_remote_surface_v2
1780  *
1781  * [Deprecated] Use zaura_surface's set_accessibility_id instead.
1782  *
1783  * Set accessibility window ID to the surface. A negative number removes
1784  * the existing accessibility ID from the surface.
1785  */
1786 static inline void
zcr_remote_surface_v2_set_accessibility_id(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,int32_t id)1787 zcr_remote_surface_v2_set_accessibility_id(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, int32_t id)
1788 {
1789 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1790 			 ZCR_REMOTE_SURFACE_V2_SET_ACCESSIBILITY_ID, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, id);
1791 }
1792 
1793 /**
1794  * @ingroup iface_zcr_remote_surface_v2
1795  *
1796  * Set this surface the original window for the current PIP window.
1797  */
1798 static inline void
zcr_remote_surface_v2_set_pip_original_window(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1799 zcr_remote_surface_v2_set_pip_original_window(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1800 {
1801 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1802 			 ZCR_REMOTE_SURFACE_V2_SET_PIP_ORIGINAL_WINDOW, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1803 }
1804 
1805 /**
1806  * @ingroup iface_zcr_remote_surface_v2
1807  *
1808  * Unset this surface the original window for the current PIP window.
1809  */
1810 static inline void
zcr_remote_surface_v2_unset_pip_original_window(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1811 zcr_remote_surface_v2_unset_pip_original_window(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1812 {
1813 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1814 			 ZCR_REMOTE_SURFACE_V2_UNSET_PIP_ORIGINAL_WINDOW, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1815 }
1816 
1817 /**
1818  * @ingroup iface_zcr_remote_surface_v2
1819  *
1820  * Set system gesture exclusion region in which system gestures e.g. back
1821  * gesture should not be triggered.
1822  */
1823 static inline void
zcr_remote_surface_v2_set_system_gesture_exclusion(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,struct wl_region * region)1824 zcr_remote_surface_v2_set_system_gesture_exclusion(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, struct wl_region *region)
1825 {
1826 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1827 			 ZCR_REMOTE_SURFACE_V2_SET_SYSTEM_GESTURE_EXCLUSION, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, region);
1828 }
1829 
1830 /**
1831  * @ingroup iface_zcr_remote_surface_v2
1832  *
1833  * [Deprecated] Enable the resize lock and put restrictions related to resizing on
1834  * the shell surface.
1835  *
1836  * The resize lock state is double buffered, and will be applied at the
1837  * time wl_surface.commit of the corresponding wl_surface is called.
1838  */
1839 static inline void
zcr_remote_surface_v2_set_resize_lock(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1840 zcr_remote_surface_v2_set_resize_lock(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1841 {
1842 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1843 			 ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1844 }
1845 
1846 /**
1847  * @ingroup iface_zcr_remote_surface_v2
1848  *
1849  * [Deprecated] Disable the resize lock and allow the shell surface to be resized
1850  * freely.
1851  *
1852  * The resize lock state is double buffered, and will be applied at the
1853  * time wl_surface.commit of the corresponding wl_surface is called.
1854  */
1855 static inline void
zcr_remote_surface_v2_unset_resize_lock(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1856 zcr_remote_surface_v2_unset_resize_lock(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1857 {
1858 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1859 			 ZCR_REMOTE_SURFACE_V2_UNSET_RESIZE_LOCK, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1860 }
1861 
1862 /**
1863  * @ingroup iface_zcr_remote_surface_v2
1864  *
1865  * Set the "visible bounds" of a window from the user's perspective.
1866  * Client-side decorations often have invisible portions like drop shadows
1867  * which should be ignored for the purposes of aligning, placing and
1868  * constraining windows.
1869  *
1870  * The bounds are double buffered, and will be applied at the
1871  * time wl_surface.commit of the corresponding wl_surface is called.
1872  *
1873  * Once the bounds are set, it is not possible to unset them, and they will
1874  * remain the same until set_bounds_in_output is called again, even if a new sub-
1875  * surface or buffer is attached.
1876  *
1877  * If never set, the value is the surface content bounds. This updates
1878  * dynamically on every commit.
1879  *
1880  * The bounds are relative to the given display. If the display is invalid,
1881  * they are assumed to be relative to the primary display.
1882  *
1883  * The width and height must be greater than zero.
1884  */
1885 static inline void
zcr_remote_surface_v2_set_bounds_in_output(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,struct wl_output * output,int32_t x,int32_t y,int32_t width,int32_t height)1886 zcr_remote_surface_v2_set_bounds_in_output(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, struct wl_output *output, int32_t x, int32_t y, int32_t width, int32_t height)
1887 {
1888 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1889 			 ZCR_REMOTE_SURFACE_V2_SET_BOUNDS_IN_OUTPUT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, output, x, y, width, height);
1890 }
1891 
1892 /**
1893  * @ingroup iface_zcr_remote_surface_v2
1894  *
1895  * Set resize lock type and put restrictions related to resizing on the shell surface.
1896  *
1897  * The resize lock type is double buffered, and will be applied at the
1898  * time wl_surface.commit of the corresponding wl_surface is called.
1899  */
1900 static inline void
zcr_remote_surface_v2_set_resize_lock_type(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t type)1901 zcr_remote_surface_v2_set_resize_lock_type(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t type)
1902 {
1903 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1904 			 ZCR_REMOTE_SURFACE_V2_SET_RESIZE_LOCK_TYPE, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, type);
1905 }
1906 
1907 /**
1908  * @ingroup iface_zcr_remote_surface_v2
1909  *
1910  * Request that surface is floated.
1911  */
1912 static inline void
zcr_remote_surface_v2_set_float(struct zcr_remote_surface_v2 * zcr_remote_surface_v2)1913 zcr_remote_surface_v2_set_float(struct zcr_remote_surface_v2 *zcr_remote_surface_v2)
1914 {
1915 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1916 			 ZCR_REMOTE_SURFACE_V2_SET_FLOAT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0);
1917 }
1918 
1919 /**
1920  * @ingroup iface_zcr_remote_surface_v2
1921  *
1922  * The client has a 32-bit float scale factor that is associated with each
1923  * remote surface. This scale factor must be propagated exactly to exo. To
1924  * do so we reinterpret_cast into a 32-bit uint and later cast back into a
1925  * float. This is because wayland does not support native transport of
1926  * floats. As different CPU architectures may use different endian
1927  * representations for IEEE 754 floats, this protocol implicitly assumes
1928  * that the caller and receiver are the same machine.
1929  * This is double buffered state and will be applied in the next commit.
1930  */
1931 static inline void
zcr_remote_surface_v2_set_scale_factor(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t scale_factor_as_uint)1932 zcr_remote_surface_v2_set_scale_factor(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t scale_factor_as_uint)
1933 {
1934 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1935 			 ZCR_REMOTE_SURFACE_V2_SET_SCALE_FACTOR, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, scale_factor_as_uint);
1936 }
1937 
1938 /**
1939  * @ingroup iface_zcr_remote_surface_v2
1940  *
1941  * The client specifies the radius of each corner to be applied to the
1942  * window in DPs (device independent pixels).
1943  *
1944  * The window radius is double buffered, and will be applied at the
1945  * time wl_surface.commit of the corresponding wl_surface is called.
1946  *
1947  * Note: Rounded corner radii affects the wl_surface tree, including
1948  * subsurfaces. Once this protocol is called, surfaces cannot set
1949  * their own rounded corner bounds because rounded window bounds will be
1950  * applied to the whole surface tree.
1951  */
1952 static inline void
zcr_remote_surface_v2_set_window_corner_radii(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t upper_left_radius,uint32_t upper_right_radius,uint32_t lower_right_radius,uint32_t lower_left_radius)1953 zcr_remote_surface_v2_set_window_corner_radii(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t upper_left_radius, uint32_t upper_right_radius, uint32_t lower_right_radius, uint32_t lower_left_radius)
1954 {
1955 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1956 			 ZCR_REMOTE_SURFACE_V2_SET_WINDOW_CORNER_RADII, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, upper_left_radius, upper_right_radius, lower_right_radius, lower_left_radius);
1957 }
1958 
1959 /**
1960  * @ingroup iface_zcr_remote_surface_v2
1961  *
1962  * The client specifies the radius of each corner to be applied to the shadow
1963  * associated with the aura toplevel surface in device independent pixels (DPs).
1964  *
1965  * The shadow radius is double buffered, and will be applied at the
1966  * time wl_surface.commit of the corresponding wl_surface is called.
1967  */
1968 static inline void
zcr_remote_surface_v2_set_shadow_corner_radii(struct zcr_remote_surface_v2 * zcr_remote_surface_v2,uint32_t upper_left_radius,uint32_t upper_right_radius,uint32_t lower_right_radius,uint32_t lower_left_radius)1969 zcr_remote_surface_v2_set_shadow_corner_radii(struct zcr_remote_surface_v2 *zcr_remote_surface_v2, uint32_t upper_left_radius, uint32_t upper_right_radius, uint32_t lower_right_radius, uint32_t lower_left_radius)
1970 {
1971 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_surface_v2,
1972 			 ZCR_REMOTE_SURFACE_V2_SET_SHADOW_CORNER_RADII, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_surface_v2), 0, upper_left_radius, upper_right_radius, lower_right_radius, lower_left_radius);
1973 }
1974 
1975 #define ZCR_NOTIFICATION_SURFACE_V2_DESTROY 0
1976 #define ZCR_NOTIFICATION_SURFACE_V2_SET_APP_ID 1
1977 
1978 
1979 /**
1980  * @ingroup iface_zcr_notification_surface_v2
1981  */
1982 #define ZCR_NOTIFICATION_SURFACE_V2_DESTROY_SINCE_VERSION 1
1983 /**
1984  * @ingroup iface_zcr_notification_surface_v2
1985  */
1986 #define ZCR_NOTIFICATION_SURFACE_V2_SET_APP_ID_SINCE_VERSION 1
1987 
1988 /** @ingroup iface_zcr_notification_surface_v2 */
1989 static inline void
zcr_notification_surface_v2_set_user_data(struct zcr_notification_surface_v2 * zcr_notification_surface_v2,void * user_data)1990 zcr_notification_surface_v2_set_user_data(struct zcr_notification_surface_v2 *zcr_notification_surface_v2, void *user_data)
1991 {
1992 	wl_proxy_set_user_data((struct wl_proxy *) zcr_notification_surface_v2, user_data);
1993 }
1994 
1995 /** @ingroup iface_zcr_notification_surface_v2 */
1996 static inline void *
zcr_notification_surface_v2_get_user_data(struct zcr_notification_surface_v2 * zcr_notification_surface_v2)1997 zcr_notification_surface_v2_get_user_data(struct zcr_notification_surface_v2 *zcr_notification_surface_v2)
1998 {
1999 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_notification_surface_v2);
2000 }
2001 
2002 static inline uint32_t
zcr_notification_surface_v2_get_version(struct zcr_notification_surface_v2 * zcr_notification_surface_v2)2003 zcr_notification_surface_v2_get_version(struct zcr_notification_surface_v2 *zcr_notification_surface_v2)
2004 {
2005 	return wl_proxy_get_version((struct wl_proxy *) zcr_notification_surface_v2);
2006 }
2007 
2008 /**
2009  * @ingroup iface_zcr_notification_surface_v2
2010  *
2011  * Unmap and destroy the notification surface.
2012  */
2013 static inline void
zcr_notification_surface_v2_destroy(struct zcr_notification_surface_v2 * zcr_notification_surface_v2)2014 zcr_notification_surface_v2_destroy(struct zcr_notification_surface_v2 *zcr_notification_surface_v2)
2015 {
2016 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_notification_surface_v2,
2017 			 ZCR_NOTIFICATION_SURFACE_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_notification_surface_v2), WL_MARSHAL_FLAG_DESTROY);
2018 }
2019 
2020 /**
2021  * @ingroup iface_zcr_notification_surface_v2
2022  *
2023  * Set an application identifier for the notification surface.
2024  */
2025 static inline void
zcr_notification_surface_v2_set_app_id(struct zcr_notification_surface_v2 * zcr_notification_surface_v2,const char * app_id)2026 zcr_notification_surface_v2_set_app_id(struct zcr_notification_surface_v2 *zcr_notification_surface_v2, const char *app_id)
2027 {
2028 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_notification_surface_v2,
2029 			 ZCR_NOTIFICATION_SURFACE_V2_SET_APP_ID, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_notification_surface_v2), 0, app_id);
2030 }
2031 
2032 #define ZCR_INPUT_METHOD_SURFACE_V2_DESTROY 0
2033 #define ZCR_INPUT_METHOD_SURFACE_V2_SET_BOUNDS_IN_OUTPUT 1
2034 
2035 
2036 /**
2037  * @ingroup iface_zcr_input_method_surface_v2
2038  */
2039 #define ZCR_INPUT_METHOD_SURFACE_V2_DESTROY_SINCE_VERSION 1
2040 /**
2041  * @ingroup iface_zcr_input_method_surface_v2
2042  */
2043 #define ZCR_INPUT_METHOD_SURFACE_V2_SET_BOUNDS_IN_OUTPUT_SINCE_VERSION 1
2044 
2045 /** @ingroup iface_zcr_input_method_surface_v2 */
2046 static inline void
zcr_input_method_surface_v2_set_user_data(struct zcr_input_method_surface_v2 * zcr_input_method_surface_v2,void * user_data)2047 zcr_input_method_surface_v2_set_user_data(struct zcr_input_method_surface_v2 *zcr_input_method_surface_v2, void *user_data)
2048 {
2049 	wl_proxy_set_user_data((struct wl_proxy *) zcr_input_method_surface_v2, user_data);
2050 }
2051 
2052 /** @ingroup iface_zcr_input_method_surface_v2 */
2053 static inline void *
zcr_input_method_surface_v2_get_user_data(struct zcr_input_method_surface_v2 * zcr_input_method_surface_v2)2054 zcr_input_method_surface_v2_get_user_data(struct zcr_input_method_surface_v2 *zcr_input_method_surface_v2)
2055 {
2056 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_input_method_surface_v2);
2057 }
2058 
2059 static inline uint32_t
zcr_input_method_surface_v2_get_version(struct zcr_input_method_surface_v2 * zcr_input_method_surface_v2)2060 zcr_input_method_surface_v2_get_version(struct zcr_input_method_surface_v2 *zcr_input_method_surface_v2)
2061 {
2062 	return wl_proxy_get_version((struct wl_proxy *) zcr_input_method_surface_v2);
2063 }
2064 
2065 /**
2066  * @ingroup iface_zcr_input_method_surface_v2
2067  *
2068  * Unmap and destroy the input mtehod surface.
2069  */
2070 static inline void
zcr_input_method_surface_v2_destroy(struct zcr_input_method_surface_v2 * zcr_input_method_surface_v2)2071 zcr_input_method_surface_v2_destroy(struct zcr_input_method_surface_v2 *zcr_input_method_surface_v2)
2072 {
2073 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_input_method_surface_v2,
2074 			 ZCR_INPUT_METHOD_SURFACE_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_input_method_surface_v2), WL_MARSHAL_FLAG_DESTROY);
2075 }
2076 
2077 /**
2078  * @ingroup iface_zcr_input_method_surface_v2
2079  *
2080  * Set the "visible bounds" of a window from the user's perspective.
2081  *
2082  * The bounds are double buffered, and will be applied at the
2083  * time wl_surface.commit of the corresponding wl_surface is called.
2084  *
2085  * Once the bounds are set, it is not possible to unset them, and they will
2086  * remain the same until set_bounds_in_output is called again, even if a new sub-
2087  * surface or buffer is attached.
2088  *
2089  * If never set, the value is the surface content bounds. This updates
2090  * dynamically on every commit.
2091  *
2092  * The bounds are relative to the given display. If the display is invalid,
2093  * they are assumed to be relative to the primary display.
2094  *
2095  * The width and height must be greater than zero.
2096  */
2097 static inline void
zcr_input_method_surface_v2_set_bounds_in_output(struct zcr_input_method_surface_v2 * zcr_input_method_surface_v2,struct wl_output * output,int32_t x,int32_t y,int32_t width,int32_t height)2098 zcr_input_method_surface_v2_set_bounds_in_output(struct zcr_input_method_surface_v2 *zcr_input_method_surface_v2, struct wl_output *output, int32_t x, int32_t y, int32_t width, int32_t height)
2099 {
2100 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_input_method_surface_v2,
2101 			 ZCR_INPUT_METHOD_SURFACE_V2_SET_BOUNDS_IN_OUTPUT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_input_method_surface_v2), 0, output, x, y, width, height);
2102 }
2103 
2104 #define ZCR_TOAST_SURFACE_V2_DESTROY 0
2105 #define ZCR_TOAST_SURFACE_V2_SET_BOUNDS_IN_OUTPUT 1
2106 #define ZCR_TOAST_SURFACE_V2_SET_SCALE_FACTOR 2
2107 
2108 
2109 /**
2110  * @ingroup iface_zcr_toast_surface_v2
2111  */
2112 #define ZCR_TOAST_SURFACE_V2_DESTROY_SINCE_VERSION 1
2113 /**
2114  * @ingroup iface_zcr_toast_surface_v2
2115  */
2116 #define ZCR_TOAST_SURFACE_V2_SET_BOUNDS_IN_OUTPUT_SINCE_VERSION 1
2117 /**
2118  * @ingroup iface_zcr_toast_surface_v2
2119  */
2120 #define ZCR_TOAST_SURFACE_V2_SET_SCALE_FACTOR_SINCE_VERSION 2
2121 
2122 /** @ingroup iface_zcr_toast_surface_v2 */
2123 static inline void
zcr_toast_surface_v2_set_user_data(struct zcr_toast_surface_v2 * zcr_toast_surface_v2,void * user_data)2124 zcr_toast_surface_v2_set_user_data(struct zcr_toast_surface_v2 *zcr_toast_surface_v2, void *user_data)
2125 {
2126 	wl_proxy_set_user_data((struct wl_proxy *) zcr_toast_surface_v2, user_data);
2127 }
2128 
2129 /** @ingroup iface_zcr_toast_surface_v2 */
2130 static inline void *
zcr_toast_surface_v2_get_user_data(struct zcr_toast_surface_v2 * zcr_toast_surface_v2)2131 zcr_toast_surface_v2_get_user_data(struct zcr_toast_surface_v2 *zcr_toast_surface_v2)
2132 {
2133 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_toast_surface_v2);
2134 }
2135 
2136 static inline uint32_t
zcr_toast_surface_v2_get_version(struct zcr_toast_surface_v2 * zcr_toast_surface_v2)2137 zcr_toast_surface_v2_get_version(struct zcr_toast_surface_v2 *zcr_toast_surface_v2)
2138 {
2139 	return wl_proxy_get_version((struct wl_proxy *) zcr_toast_surface_v2);
2140 }
2141 
2142 /**
2143  * @ingroup iface_zcr_toast_surface_v2
2144  *
2145  * Unmap and destroy the toast surface.
2146  */
2147 static inline void
zcr_toast_surface_v2_destroy(struct zcr_toast_surface_v2 * zcr_toast_surface_v2)2148 zcr_toast_surface_v2_destroy(struct zcr_toast_surface_v2 *zcr_toast_surface_v2)
2149 {
2150 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_toast_surface_v2,
2151 			 ZCR_TOAST_SURFACE_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_toast_surface_v2), WL_MARSHAL_FLAG_DESTROY);
2152 }
2153 
2154 /**
2155  * @ingroup iface_zcr_toast_surface_v2
2156  *
2157  * Set the bounds of a toast window from the user's perspective.
2158  *
2159  * The bounds are double buffered, and will be applied at the
2160  * time wl_surface.commit of the corresponding wl_surface is called.
2161  *
2162  * Once the bounds are set, it is not possible to unset them, and they will
2163  * remain the same until set_bounds is called again, even if a new sub-
2164  * surface or buffer is attached.
2165  *
2166  * If never set, the compositor will determine the toast position.
2167  *
2168  * The bounds are relative to the given display. If the display is invalid,
2169  * they are assumed to be relative to the primary display.
2170  */
2171 static inline void
zcr_toast_surface_v2_set_bounds_in_output(struct zcr_toast_surface_v2 * zcr_toast_surface_v2,struct wl_output * output,int32_t x,int32_t y,int32_t width,int32_t height)2172 zcr_toast_surface_v2_set_bounds_in_output(struct zcr_toast_surface_v2 *zcr_toast_surface_v2, struct wl_output *output, int32_t x, int32_t y, int32_t width, int32_t height)
2173 {
2174 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_toast_surface_v2,
2175 			 ZCR_TOAST_SURFACE_V2_SET_BOUNDS_IN_OUTPUT, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_toast_surface_v2), 0, output, x, y, width, height);
2176 }
2177 
2178 /**
2179  * @ingroup iface_zcr_toast_surface_v2
2180  *
2181  * The client has a 32-bit float scale factor that is associated with each
2182  * remote surface. This scale factor must be propagated exactly to exo. To
2183  * do so we reinterpret_cast into a 32-bit uint and later cast back into a
2184  * float. This is because wayland does not support native transport of
2185  * floats. As different CPU architectures may use different endian
2186  * representations for IEEE 754 floats, this protocol implicitly assumes
2187  * that the caller and receiver are the same machine.
2188  * This is double buffered state and will be applied in the next commit.
2189  */
2190 static inline void
zcr_toast_surface_v2_set_scale_factor(struct zcr_toast_surface_v2 * zcr_toast_surface_v2,uint32_t scale_factor_as_uint)2191 zcr_toast_surface_v2_set_scale_factor(struct zcr_toast_surface_v2 *zcr_toast_surface_v2, uint32_t scale_factor_as_uint)
2192 {
2193 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_toast_surface_v2,
2194 			 ZCR_TOAST_SURFACE_V2_SET_SCALE_FACTOR, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_toast_surface_v2), 0, scale_factor_as_uint);
2195 }
2196 
2197 #ifndef ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_ENUM
2198 #define ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_ENUM
2199 /**
2200  * @ingroup iface_zcr_remote_output_v2
2201  * systemui behavior
2202  *
2203  * Determine the behavior of the system UI.
2204  */
2205 enum zcr_remote_output_v2_systemui_behavior {
2206 	/**
2207 	 * system ui is visible
2208 	 */
2209 	ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_VISIBLE = 1,
2210 	/**
2211 	 * system ui is autohide or hidden
2212 	 */
2213 	ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_HIDDEN = 2,
2214 };
2215 #endif /* ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_ENUM */
2216 
2217 /**
2218  * @ingroup iface_zcr_remote_output_v2
2219  * @struct zcr_remote_output_v2_listener
2220  */
2221 struct zcr_remote_output_v2_listener {
2222 	/**
2223 	 * the identifier for the display
2224 	 *
2225 	 * [Deprecated] Sends the display identifier used by the server
2226 	 * for the display.
2227 	 */
2228 	void (*display_id)(void *data,
2229 			   struct zcr_remote_output_v2 *zcr_remote_output_v2,
2230 			   uint32_t display_id_hi,
2231 			   uint32_t display_id_lo);
2232 	/**
2233 	 * the port of the display
2234 	 *
2235 	 * Sends the port to which the display is connected for the
2236 	 * server.
2237 	 */
2238 	void (*port)(void *data,
2239 		     struct zcr_remote_output_v2 *zcr_remote_output_v2,
2240 		     uint32_t port);
2241 	/**
2242 	 * the identification data for the display
2243 	 *
2244 	 * Sends the identification data for the display, typically in
2245 	 * the EDID format.
2246 	 */
2247 	void (*identification_data)(void *data,
2248 				    struct zcr_remote_output_v2 *zcr_remote_output_v2,
2249 				    struct wl_array *identification_data);
2250 	/**
2251 	 * insets for the display in pixels
2252 	 *
2253 	 * Sends inset information about a particular display in the
2254 	 * display's native coordinates.
2255 	 */
2256 	void (*insets)(void *data,
2257 		       struct zcr_remote_output_v2 *zcr_remote_output_v2,
2258 		       int32_t inset_left,
2259 		       int32_t inset_top,
2260 		       int32_t inset_right,
2261 		       int32_t inset_bottom);
2262 	/**
2263 	 * stable insets for a display in pixels
2264 	 *
2265 	 * Sends stable inset information about a particular display in
2266 	 * the display's native coordinates.
2267 	 */
2268 	void (*stable_insets)(void *data,
2269 			      struct zcr_remote_output_v2 *zcr_remote_output_v2,
2270 			      int32_t stable_inset_left,
2271 			      int32_t stable_inset_top,
2272 			      int32_t stable_inset_right,
2273 			      int32_t stable_inset_bottom);
2274 	/**
2275 	 * systemui_behavior_state for a display
2276 	 *
2277 	 * Sends information about whether the systemui behavior is auto
2278 	 * hide. The "systemui_behavior" value is of enum type
2279 	 * "systemui_behavior".
2280 	 */
2281 	void (*systemui_behavior)(void *data,
2282 				  struct zcr_remote_output_v2 *zcr_remote_output_v2,
2283 				  int32_t systemui_behavior);
2284 };
2285 
2286 /**
2287  * @ingroup iface_zcr_remote_output_v2
2288  */
2289 static inline int
zcr_remote_output_v2_add_listener(struct zcr_remote_output_v2 * zcr_remote_output_v2,const struct zcr_remote_output_v2_listener * listener,void * data)2290 zcr_remote_output_v2_add_listener(struct zcr_remote_output_v2 *zcr_remote_output_v2,
2291 				  const struct zcr_remote_output_v2_listener *listener, void *data)
2292 {
2293 	return wl_proxy_add_listener((struct wl_proxy *) zcr_remote_output_v2,
2294 				     (void (**)(void)) listener, data);
2295 }
2296 
2297 #define ZCR_REMOTE_OUTPUT_V2_DESTROY 0
2298 
2299 /**
2300  * @ingroup iface_zcr_remote_output_v2
2301  */
2302 #define ZCR_REMOTE_OUTPUT_V2_DISPLAY_ID_SINCE_VERSION 1
2303 /**
2304  * @ingroup iface_zcr_remote_output_v2
2305  */
2306 #define ZCR_REMOTE_OUTPUT_V2_PORT_SINCE_VERSION 1
2307 /**
2308  * @ingroup iface_zcr_remote_output_v2
2309  */
2310 #define ZCR_REMOTE_OUTPUT_V2_IDENTIFICATION_DATA_SINCE_VERSION 1
2311 /**
2312  * @ingroup iface_zcr_remote_output_v2
2313  */
2314 #define ZCR_REMOTE_OUTPUT_V2_INSETS_SINCE_VERSION 1
2315 /**
2316  * @ingroup iface_zcr_remote_output_v2
2317  */
2318 #define ZCR_REMOTE_OUTPUT_V2_STABLE_INSETS_SINCE_VERSION 1
2319 /**
2320  * @ingroup iface_zcr_remote_output_v2
2321  */
2322 #define ZCR_REMOTE_OUTPUT_V2_SYSTEMUI_BEHAVIOR_SINCE_VERSION 1
2323 
2324 /**
2325  * @ingroup iface_zcr_remote_output_v2
2326  */
2327 #define ZCR_REMOTE_OUTPUT_V2_DESTROY_SINCE_VERSION 1
2328 
2329 /** @ingroup iface_zcr_remote_output_v2 */
2330 static inline void
zcr_remote_output_v2_set_user_data(struct zcr_remote_output_v2 * zcr_remote_output_v2,void * user_data)2331 zcr_remote_output_v2_set_user_data(struct zcr_remote_output_v2 *zcr_remote_output_v2, void *user_data)
2332 {
2333 	wl_proxy_set_user_data((struct wl_proxy *) zcr_remote_output_v2, user_data);
2334 }
2335 
2336 /** @ingroup iface_zcr_remote_output_v2 */
2337 static inline void *
zcr_remote_output_v2_get_user_data(struct zcr_remote_output_v2 * zcr_remote_output_v2)2338 zcr_remote_output_v2_get_user_data(struct zcr_remote_output_v2 *zcr_remote_output_v2)
2339 {
2340 	return wl_proxy_get_user_data((struct wl_proxy *) zcr_remote_output_v2);
2341 }
2342 
2343 static inline uint32_t
zcr_remote_output_v2_get_version(struct zcr_remote_output_v2 * zcr_remote_output_v2)2344 zcr_remote_output_v2_get_version(struct zcr_remote_output_v2 *zcr_remote_output_v2)
2345 {
2346 	return wl_proxy_get_version((struct wl_proxy *) zcr_remote_output_v2);
2347 }
2348 
2349 /**
2350  * @ingroup iface_zcr_remote_output_v2
2351  *
2352  * Destroy this remote_output object.
2353  */
2354 static inline void
zcr_remote_output_v2_destroy(struct zcr_remote_output_v2 * zcr_remote_output_v2)2355 zcr_remote_output_v2_destroy(struct zcr_remote_output_v2 *zcr_remote_output_v2)
2356 {
2357 	wl_proxy_marshal_flags((struct wl_proxy *) zcr_remote_output_v2,
2358 			 ZCR_REMOTE_OUTPUT_V2_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) zcr_remote_output_v2), WL_MARSHAL_FLAG_DESTROY);
2359 }
2360 
2361 #ifdef  __cplusplus
2362 }
2363 #endif
2364 
2365 #endif
2366