1 /* Generated by wayland-scanner 1.22.0 */
2 
3 #ifndef FULLSCREEN_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H
4 #define FULLSCREEN_SHELL_UNSTABLE_V1_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_fullscreen_shell_unstable_v1 The fullscreen_shell_unstable_v1 protocol
16  * @section page_ifaces_fullscreen_shell_unstable_v1 Interfaces
17  * - @subpage page_iface_zwp_fullscreen_shell_v1 - displays a single surface per output
18  * - @subpage page_iface_zwp_fullscreen_shell_mode_feedback_v1 -
19  * @section page_copyright_fullscreen_shell_unstable_v1 Copyright
20  * <pre>
21  *
22  * Copyright © 2016 Yong Bakos
23  * Copyright © 2015 Jason Ekstrand
24  * Copyright © 2015 Jonas Ådahl
25  *
26  * Permission is hereby granted, free of charge, to any person obtaining a
27  * copy of this software and associated documentation files (the "Software"),
28  * to deal in the Software without restriction, including without limitation
29  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
30  * and/or sell copies of the Software, and to permit persons to whom the
31  * Software is furnished to do so, subject to the following conditions:
32  *
33  * The above copyright notice and this permission notice (including the next
34  * paragraph) shall be included in all copies or substantial portions of the
35  * Software.
36  *
37  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
40  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
42  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
43  * DEALINGS IN THE SOFTWARE.
44  * </pre>
45  */
46 struct wl_output;
47 struct wl_surface;
48 struct zwp_fullscreen_shell_mode_feedback_v1;
49 struct zwp_fullscreen_shell_v1;
50 
51 #ifndef ZWP_FULLSCREEN_SHELL_V1_INTERFACE
52 #define ZWP_FULLSCREEN_SHELL_V1_INTERFACE
53 /**
54  * @page page_iface_zwp_fullscreen_shell_v1 zwp_fullscreen_shell_v1
55  * @section page_iface_zwp_fullscreen_shell_v1_desc Description
56  *
57  * Displays a single surface per output.
58  *
59  * This interface provides a mechanism for a single client to display
60  * simple full-screen surfaces.  While there technically may be multiple
61  * clients bound to this interface, only one of those clients should be
62  * shown at a time.
63  *
64  * To present a surface, the client uses either the present_surface or
65  * present_surface_for_mode requests.  Presenting a surface takes effect
66  * on the next wl_surface.commit.  See the individual requests for
67  * details about scaling and mode switches.
68  *
69  * The client can have at most one surface per output at any time.
70  * Requesting a surface to be presented on an output that already has a
71  * surface replaces the previously presented surface.  Presenting a null
72  * surface removes its content and effectively disables the output.
73  * Exactly what happens when an output is "disabled" is
74  * compositor-specific.  The same surface may be presented on multiple
75  * outputs simultaneously.
76  *
77  * Once a surface is presented on an output, it stays on that output
78  * until either the client removes it or the compositor destroys the
79  * output.  This way, the client can update the output's contents by
80  * simply attaching a new buffer.
81  *
82  * Warning! The protocol described in this file is experimental and
83  * backward incompatible changes may be made. Backward compatible changes
84  * may be added together with the corresponding interface version bump.
85  * Backward incompatible changes are done by bumping the version number in
86  * the protocol and interface names and resetting the interface version.
87  * Once the protocol is to be declared stable, the 'z' prefix and the
88  * version number in the protocol and interface names are removed and the
89  * interface version number is reset.
90  * @section page_iface_zwp_fullscreen_shell_v1_api API
91  * See @ref iface_zwp_fullscreen_shell_v1.
92  */
93 /**
94  * @defgroup iface_zwp_fullscreen_shell_v1 The zwp_fullscreen_shell_v1 interface
95  *
96  * Displays a single surface per output.
97  *
98  * This interface provides a mechanism for a single client to display
99  * simple full-screen surfaces.  While there technically may be multiple
100  * clients bound to this interface, only one of those clients should be
101  * shown at a time.
102  *
103  * To present a surface, the client uses either the present_surface or
104  * present_surface_for_mode requests.  Presenting a surface takes effect
105  * on the next wl_surface.commit.  See the individual requests for
106  * details about scaling and mode switches.
107  *
108  * The client can have at most one surface per output at any time.
109  * Requesting a surface to be presented on an output that already has a
110  * surface replaces the previously presented surface.  Presenting a null
111  * surface removes its content and effectively disables the output.
112  * Exactly what happens when an output is "disabled" is
113  * compositor-specific.  The same surface may be presented on multiple
114  * outputs simultaneously.
115  *
116  * Once a surface is presented on an output, it stays on that output
117  * until either the client removes it or the compositor destroys the
118  * output.  This way, the client can update the output's contents by
119  * simply attaching a new buffer.
120  *
121  * Warning! The protocol described in this file is experimental and
122  * backward incompatible changes may be made. Backward compatible changes
123  * may be added together with the corresponding interface version bump.
124  * Backward incompatible changes are done by bumping the version number in
125  * the protocol and interface names and resetting the interface version.
126  * Once the protocol is to be declared stable, the 'z' prefix and the
127  * version number in the protocol and interface names are removed and the
128  * interface version number is reset.
129  */
130 extern const struct wl_interface zwp_fullscreen_shell_v1_interface;
131 #endif
132 #ifndef ZWP_FULLSCREEN_SHELL_MODE_FEEDBACK_V1_INTERFACE
133 #define ZWP_FULLSCREEN_SHELL_MODE_FEEDBACK_V1_INTERFACE
134 /**
135  * @page page_iface_zwp_fullscreen_shell_mode_feedback_v1 zwp_fullscreen_shell_mode_feedback_v1
136  * @section page_iface_zwp_fullscreen_shell_mode_feedback_v1_api API
137  * See @ref iface_zwp_fullscreen_shell_mode_feedback_v1.
138  */
139 /**
140  * @defgroup iface_zwp_fullscreen_shell_mode_feedback_v1 The zwp_fullscreen_shell_mode_feedback_v1 interface
141  */
142 extern const struct wl_interface zwp_fullscreen_shell_mode_feedback_v1_interface;
143 #endif
144 
145 #ifndef ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_ENUM
146 #define ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_ENUM
147 /**
148  * @ingroup iface_zwp_fullscreen_shell_v1
149  * capabilities advertised by the compositor
150  *
151  * Various capabilities that can be advertised by the compositor.  They
152  * are advertised one-at-a-time when the wl_fullscreen_shell interface is
153  * bound.  See the wl_fullscreen_shell.capability event for more details.
154  *
155  * ARBITRARY_MODES:
156  * This is a hint to the client that indicates that the compositor is
157  * capable of setting practically any mode on its outputs.  If this
158  * capability is provided, wl_fullscreen_shell.present_surface_for_mode
159  * will almost never fail and clients should feel free to set whatever
160  * mode they like.  If the compositor does not advertise this, it may
161  * still support some modes that are not advertised through wl_global.mode
162  * but it is less likely.
163  *
164  * CURSOR_PLANE:
165  * This is a hint to the client that indicates that the compositor can
166  * handle a cursor surface from the client without actually compositing.
167  * This may be because of a hardware cursor plane or some other mechanism.
168  * If the compositor does not advertise this capability then setting
169  * wl_pointer.cursor may degrade performance or be ignored entirely.  If
170  * CURSOR_PLANE is not advertised, it is recommended that the client draw
171  * its own cursor and set wl_pointer.cursor(NULL).
172  */
173 enum zwp_fullscreen_shell_v1_capability {
174 	/**
175 	 * compositor is capable of almost any output mode
176 	 */
177 	ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_ARBITRARY_MODES = 1,
178 	/**
179 	 * compositor has a separate cursor plane
180 	 */
181 	ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_CURSOR_PLANE = 2,
182 };
183 #endif /* ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_ENUM */
184 
185 #ifndef ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_ENUM
186 #define ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_ENUM
187 /**
188  * @ingroup iface_zwp_fullscreen_shell_v1
189  * different method to set the surface fullscreen
190  *
191  * Hints to indicate to the compositor how to deal with a conflict
192  * between the dimensions of the surface and the dimensions of the
193  * output. The compositor is free to ignore this parameter.
194  */
195 enum zwp_fullscreen_shell_v1_present_method {
196 	/**
197 	 * no preference, apply default policy
198 	 */
199 	ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_DEFAULT = 0,
200 	/**
201 	 * center the surface on the output
202 	 */
203 	ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_CENTER = 1,
204 	/**
205 	 * scale the surface, preserving aspect ratio, to the largest size that will fit on the output
206 	 */
207 	ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_ZOOM = 2,
208 	/**
209 	 * scale the surface, preserving aspect ratio, to fully fill the output cropping if needed
210 	 */
211 	ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_ZOOM_CROP = 3,
212 	/**
213 	 * scale the surface to the size of the output ignoring aspect ratio
214 	 */
215 	ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_STRETCH = 4,
216 };
217 #endif /* ZWP_FULLSCREEN_SHELL_V1_PRESENT_METHOD_ENUM */
218 
219 #ifndef ZWP_FULLSCREEN_SHELL_V1_ERROR_ENUM
220 #define ZWP_FULLSCREEN_SHELL_V1_ERROR_ENUM
221 /**
222  * @ingroup iface_zwp_fullscreen_shell_v1
223  * wl_fullscreen_shell error values
224  *
225  * These errors can be emitted in response to wl_fullscreen_shell requests.
226  */
227 enum zwp_fullscreen_shell_v1_error {
228 	/**
229 	 * present_method is not known
230 	 */
231 	ZWP_FULLSCREEN_SHELL_V1_ERROR_INVALID_METHOD = 0,
232 	/**
233 	 * given wl_surface has another role
234 	 */
235 	ZWP_FULLSCREEN_SHELL_V1_ERROR_ROLE = 1,
236 };
237 #endif /* ZWP_FULLSCREEN_SHELL_V1_ERROR_ENUM */
238 
239 /**
240  * @ingroup iface_zwp_fullscreen_shell_v1
241  * @struct zwp_fullscreen_shell_v1_listener
242  */
243 struct zwp_fullscreen_shell_v1_listener {
244 	/**
245 	 * advertises a capability of the compositor
246 	 *
247 	 * Advertises a single capability of the compositor.
248 	 *
249 	 * When the wl_fullscreen_shell interface is bound, this event is
250 	 * emitted once for each capability advertised. Valid capabilities
251 	 * are given by the wl_fullscreen_shell.capability enum. If clients
252 	 * want to take advantage of any of these capabilities, they should
253 	 * use a wl_display.sync request immediately after binding to
254 	 * ensure that they receive all the capability events.
255 	 */
256 	void (*capability)(void *data,
257 			   struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1,
258 			   uint32_t capability);
259 };
260 
261 /**
262  * @ingroup iface_zwp_fullscreen_shell_v1
263  */
264 static inline int
zwp_fullscreen_shell_v1_add_listener(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1,const struct zwp_fullscreen_shell_v1_listener * listener,void * data)265 zwp_fullscreen_shell_v1_add_listener(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1,
266 				     const struct zwp_fullscreen_shell_v1_listener *listener, void *data)
267 {
268 	return wl_proxy_add_listener((struct wl_proxy *) zwp_fullscreen_shell_v1,
269 				     (void (**)(void)) listener, data);
270 }
271 
272 #define ZWP_FULLSCREEN_SHELL_V1_RELEASE 0
273 #define ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE 1
274 #define ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE_FOR_MODE 2
275 
276 /**
277  * @ingroup iface_zwp_fullscreen_shell_v1
278  */
279 #define ZWP_FULLSCREEN_SHELL_V1_CAPABILITY_SINCE_VERSION 1
280 
281 /**
282  * @ingroup iface_zwp_fullscreen_shell_v1
283  */
284 #define ZWP_FULLSCREEN_SHELL_V1_RELEASE_SINCE_VERSION 1
285 /**
286  * @ingroup iface_zwp_fullscreen_shell_v1
287  */
288 #define ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE_SINCE_VERSION 1
289 /**
290  * @ingroup iface_zwp_fullscreen_shell_v1
291  */
292 #define ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE_FOR_MODE_SINCE_VERSION 1
293 
294 /** @ingroup iface_zwp_fullscreen_shell_v1 */
295 static inline void
zwp_fullscreen_shell_v1_set_user_data(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1,void * user_data)296 zwp_fullscreen_shell_v1_set_user_data(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1, void *user_data)
297 {
298 	wl_proxy_set_user_data((struct wl_proxy *) zwp_fullscreen_shell_v1, user_data);
299 }
300 
301 /** @ingroup iface_zwp_fullscreen_shell_v1 */
302 static inline void *
zwp_fullscreen_shell_v1_get_user_data(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1)303 zwp_fullscreen_shell_v1_get_user_data(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1)
304 {
305 	return wl_proxy_get_user_data((struct wl_proxy *) zwp_fullscreen_shell_v1);
306 }
307 
308 static inline uint32_t
zwp_fullscreen_shell_v1_get_version(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1)309 zwp_fullscreen_shell_v1_get_version(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1)
310 {
311 	return wl_proxy_get_version((struct wl_proxy *) zwp_fullscreen_shell_v1);
312 }
313 
314 /** @ingroup iface_zwp_fullscreen_shell_v1 */
315 static inline void
zwp_fullscreen_shell_v1_destroy(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1)316 zwp_fullscreen_shell_v1_destroy(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1)
317 {
318 	wl_proxy_destroy((struct wl_proxy *) zwp_fullscreen_shell_v1);
319 }
320 
321 /**
322  * @ingroup iface_zwp_fullscreen_shell_v1
323  *
324  * Release the binding from the wl_fullscreen_shell interface.
325  *
326  * This destroys the server-side object and frees this binding.  If
327  * the client binds to wl_fullscreen_shell multiple times, it may wish
328  * to free some of those bindings.
329  */
330 static inline void
zwp_fullscreen_shell_v1_release(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1)331 zwp_fullscreen_shell_v1_release(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1)
332 {
333 	wl_proxy_marshal_flags((struct wl_proxy *) zwp_fullscreen_shell_v1,
334 			 ZWP_FULLSCREEN_SHELL_V1_RELEASE, NULL, wl_proxy_get_version((struct wl_proxy *) zwp_fullscreen_shell_v1), WL_MARSHAL_FLAG_DESTROY);
335 }
336 
337 /**
338  * @ingroup iface_zwp_fullscreen_shell_v1
339  *
340  * Present a surface on the given output.
341  *
342  * If the output is null, the compositor will present the surface on
343  * whatever display (or displays) it thinks best.  In particular, this
344  * may replace any or all surfaces currently presented so it should
345  * not be used in combination with placing surfaces on specific
346  * outputs.
347  *
348  * The method parameter is a hint to the compositor for how the surface
349  * is to be presented.  In particular, it tells the compositor how to
350  * handle a size mismatch between the presented surface and the
351  * output.  The compositor is free to ignore this parameter.
352  *
353  * The "zoom", "zoom_crop", and "stretch" methods imply a scaling
354  * operation on the surface.  This will override any kind of output
355  * scaling, so the buffer_scale property of the surface is effectively
356  * ignored.
357  *
358  * This request gives the surface the role of a fullscreen shell surface.
359  * If the surface already has another role, it raises a role protocol
360  * error.
361  */
362 static inline void
zwp_fullscreen_shell_v1_present_surface(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1,struct wl_surface * surface,uint32_t method,struct wl_output * output)363 zwp_fullscreen_shell_v1_present_surface(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1, struct wl_surface *surface, uint32_t method, struct wl_output *output)
364 {
365 	wl_proxy_marshal_flags((struct wl_proxy *) zwp_fullscreen_shell_v1,
366 			 ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE, NULL, wl_proxy_get_version((struct wl_proxy *) zwp_fullscreen_shell_v1), 0, surface, method, output);
367 }
368 
369 /**
370  * @ingroup iface_zwp_fullscreen_shell_v1
371  *
372  * Presents a surface on the given output for a particular mode.
373  *
374  * If the current size of the output differs from that of the surface,
375  * the compositor will attempt to change the size of the output to
376  * match the surface.  The result of the mode-switch operation will be
377  * returned via the provided wl_fullscreen_shell_mode_feedback object.
378  *
379  * If the current output mode matches the one requested or if the
380  * compositor successfully switches the mode to match the surface,
381  * then the mode_successful event will be sent and the output will
382  * contain the contents of the given surface.  If the compositor
383  * cannot match the output size to the surface size, the mode_failed
384  * will be sent and the output will contain the contents of the
385  * previously presented surface (if any).  If another surface is
386  * presented on the given output before either of these has a chance
387  * to happen, the present_cancelled event will be sent.
388  *
389  * Due to race conditions and other issues unknown to the client, no
390  * mode-switch operation is guaranteed to succeed.  However, if the
391  * mode is one advertised by wl_output.mode or if the compositor
392  * advertises the ARBITRARY_MODES capability, then the client should
393  * expect that the mode-switch operation will usually succeed.
394  *
395  * If the size of the presented surface changes, the resulting output
396  * is undefined.  The compositor may attempt to change the output mode
397  * to compensate.  However, there is no guarantee that a suitable mode
398  * will be found and the client has no way to be notified of success
399  * or failure.
400  *
401  * The framerate parameter specifies the desired framerate for the
402  * output in mHz.  The compositor is free to ignore this parameter.  A
403  * value of 0 indicates that the client has no preference.
404  *
405  * If the value of wl_output.scale differs from wl_surface.buffer_scale,
406  * then the compositor may choose a mode that matches either the buffer
407  * size or the surface size.  In either case, the surface will fill the
408  * output.
409  *
410  * This request gives the surface the role of a fullscreen shell surface.
411  * If the surface already has another role, it raises a role protocol
412  * error.
413  */
414 static inline struct zwp_fullscreen_shell_mode_feedback_v1 *
zwp_fullscreen_shell_v1_present_surface_for_mode(struct zwp_fullscreen_shell_v1 * zwp_fullscreen_shell_v1,struct wl_surface * surface,struct wl_output * output,int32_t framerate)415 zwp_fullscreen_shell_v1_present_surface_for_mode(struct zwp_fullscreen_shell_v1 *zwp_fullscreen_shell_v1, struct wl_surface *surface, struct wl_output *output, int32_t framerate)
416 {
417 	struct wl_proxy *feedback;
418 
419 	feedback = wl_proxy_marshal_flags((struct wl_proxy *) zwp_fullscreen_shell_v1,
420 			 ZWP_FULLSCREEN_SHELL_V1_PRESENT_SURFACE_FOR_MODE, &zwp_fullscreen_shell_mode_feedback_v1_interface, wl_proxy_get_version((struct wl_proxy *) zwp_fullscreen_shell_v1), 0, surface, output, framerate, NULL);
421 
422 	return (struct zwp_fullscreen_shell_mode_feedback_v1 *) feedback;
423 }
424 
425 /**
426  * @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1
427  * @struct zwp_fullscreen_shell_mode_feedback_v1_listener
428  */
429 struct zwp_fullscreen_shell_mode_feedback_v1_listener {
430 	/**
431 	 * mode switch succeeded
432 	 *
433 	 * This event indicates that the attempted mode switch operation
434 	 * was successful. A surface of the size requested in the mode
435 	 * switch will fill the output without scaling.
436 	 *
437 	 * Upon receiving this event, the client should destroy the
438 	 * wl_fullscreen_shell_mode_feedback object.
439 	 */
440 	void (*mode_successful)(void *data,
441 				struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1);
442 	/**
443 	 * mode switch failed
444 	 *
445 	 * This event indicates that the attempted mode switch operation
446 	 * failed. This may be because the requested output mode is not
447 	 * possible or it may mean that the compositor does not want to
448 	 * allow it.
449 	 *
450 	 * Upon receiving this event, the client should destroy the
451 	 * wl_fullscreen_shell_mode_feedback object.
452 	 */
453 	void (*mode_failed)(void *data,
454 			    struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1);
455 	/**
456 	 * mode switch cancelled
457 	 *
458 	 * This event indicates that the attempted mode switch operation
459 	 * was cancelled. Most likely this is because the client requested
460 	 * a second mode switch before the first one completed.
461 	 *
462 	 * Upon receiving this event, the client should destroy the
463 	 * wl_fullscreen_shell_mode_feedback object.
464 	 */
465 	void (*present_cancelled)(void *data,
466 				  struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1);
467 };
468 
469 /**
470  * @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1
471  */
472 static inline int
zwp_fullscreen_shell_mode_feedback_v1_add_listener(struct zwp_fullscreen_shell_mode_feedback_v1 * zwp_fullscreen_shell_mode_feedback_v1,const struct zwp_fullscreen_shell_mode_feedback_v1_listener * listener,void * data)473 zwp_fullscreen_shell_mode_feedback_v1_add_listener(struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1,
474 						   const struct zwp_fullscreen_shell_mode_feedback_v1_listener *listener, void *data)
475 {
476 	return wl_proxy_add_listener((struct wl_proxy *) zwp_fullscreen_shell_mode_feedback_v1,
477 				     (void (**)(void)) listener, data);
478 }
479 
480 /**
481  * @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1
482  */
483 #define ZWP_FULLSCREEN_SHELL_MODE_FEEDBACK_V1_MODE_SUCCESSFUL_SINCE_VERSION 1
484 /**
485  * @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1
486  */
487 #define ZWP_FULLSCREEN_SHELL_MODE_FEEDBACK_V1_MODE_FAILED_SINCE_VERSION 1
488 /**
489  * @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1
490  */
491 #define ZWP_FULLSCREEN_SHELL_MODE_FEEDBACK_V1_PRESENT_CANCELLED_SINCE_VERSION 1
492 
493 
494 /** @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1 */
495 static inline void
zwp_fullscreen_shell_mode_feedback_v1_set_user_data(struct zwp_fullscreen_shell_mode_feedback_v1 * zwp_fullscreen_shell_mode_feedback_v1,void * user_data)496 zwp_fullscreen_shell_mode_feedback_v1_set_user_data(struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1, void *user_data)
497 {
498 	wl_proxy_set_user_data((struct wl_proxy *) zwp_fullscreen_shell_mode_feedback_v1, user_data);
499 }
500 
501 /** @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1 */
502 static inline void *
zwp_fullscreen_shell_mode_feedback_v1_get_user_data(struct zwp_fullscreen_shell_mode_feedback_v1 * zwp_fullscreen_shell_mode_feedback_v1)503 zwp_fullscreen_shell_mode_feedback_v1_get_user_data(struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1)
504 {
505 	return wl_proxy_get_user_data((struct wl_proxy *) zwp_fullscreen_shell_mode_feedback_v1);
506 }
507 
508 static inline uint32_t
zwp_fullscreen_shell_mode_feedback_v1_get_version(struct zwp_fullscreen_shell_mode_feedback_v1 * zwp_fullscreen_shell_mode_feedback_v1)509 zwp_fullscreen_shell_mode_feedback_v1_get_version(struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1)
510 {
511 	return wl_proxy_get_version((struct wl_proxy *) zwp_fullscreen_shell_mode_feedback_v1);
512 }
513 
514 /** @ingroup iface_zwp_fullscreen_shell_mode_feedback_v1 */
515 static inline void
zwp_fullscreen_shell_mode_feedback_v1_destroy(struct zwp_fullscreen_shell_mode_feedback_v1 * zwp_fullscreen_shell_mode_feedback_v1)516 zwp_fullscreen_shell_mode_feedback_v1_destroy(struct zwp_fullscreen_shell_mode_feedback_v1 *zwp_fullscreen_shell_mode_feedback_v1)
517 {
518 	wl_proxy_destroy((struct wl_proxy *) zwp_fullscreen_shell_mode_feedback_v1);
519 }
520 
521 #ifdef  __cplusplus
522 }
523 #endif
524 
525 #endif
526