zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

wayland-pointer-constraints-unstable-v1-client-protocol.h (25198B)


      1 /* Generated by wayland-scanner */
      2 
      3 #ifndef POINTER_CONSTRAINTS_UNSTABLE_V1_CLIENT_PROTOCOL_H
      4 #define POINTER_CONSTRAINTS_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_pointer_constraints_unstable_v1 The pointer_constraints_unstable_v1 protocol
     16  * protocol for constraining pointer motions
     17  *
     18  * @section page_desc_pointer_constraints_unstable_v1 Description
     19  *
     20  * This protocol specifies a set of interfaces used for adding constraints to
     21  * the motion of a pointer. Possible constraints include confining pointer
     22  * motions to a given region, or locking it to its current position.
     23  *
     24  * In order to constrain the pointer, a client must first bind the global
     25  * interface "wp_pointer_constraints" which, if a compositor supports pointer
     26  * constraints, is exposed by the registry. Using the bound global object, the
     27  * client uses the request that corresponds to the type of constraint it wants
     28  * to make. See wp_pointer_constraints for more details.
     29  *
     30  * Warning! The protocol described in this file is experimental and backward
     31  * incompatible changes may be made. Backward compatible changes may be added
     32  * together with the corresponding interface version bump. Backward
     33  * incompatible changes are done by bumping the version number in the protocol
     34  * and interface names and resetting the interface version. Once the protocol
     35  * is to be declared stable, the 'z' prefix and the version number in the
     36  * protocol and interface names are removed and the interface version number is
     37  * reset.
     38  *
     39  * @section page_ifaces_pointer_constraints_unstable_v1 Interfaces
     40  * - @subpage page_iface_zwp_pointer_constraints_v1 - constrain the movement of a pointer
     41  * - @subpage page_iface_zwp_locked_pointer_v1 - receive relative pointer motion events
     42  * - @subpage page_iface_zwp_confined_pointer_v1 - confined pointer object
     43  * @section page_copyright_pointer_constraints_unstable_v1 Copyright
     44  * <pre>
     45  *
     46  * Copyright © 2014      Jonas Ådahl
     47  * Copyright © 2015      Red Hat Inc.
     48  *
     49  * Permission is hereby granted, free of charge, to any person obtaining a
     50  * copy of this software and associated documentation files (the "Software"),
     51  * to deal in the Software without restriction, including without limitation
     52  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     53  * and/or sell copies of the Software, and to permit persons to whom the
     54  * Software is furnished to do so, subject to the following conditions:
     55  *
     56  * The above copyright notice and this permission notice (including the next
     57  * paragraph) shall be included in all copies or substantial portions of the
     58  * Software.
     59  *
     60  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     61  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     62  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     63  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     64  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     65  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     66  * DEALINGS IN THE SOFTWARE.
     67  * </pre>
     68  */
     69 struct wl_pointer;
     70 struct wl_region;
     71 struct wl_surface;
     72 struct zwp_confined_pointer_v1;
     73 struct zwp_locked_pointer_v1;
     74 struct zwp_pointer_constraints_v1;
     75 
     76 /**
     77  * @page page_iface_zwp_pointer_constraints_v1 zwp_pointer_constraints_v1
     78  * @section page_iface_zwp_pointer_constraints_v1_desc Description
     79  *
     80  * The global interface exposing pointer constraining functionality. It
     81  * exposes two requests: lock_pointer for locking the pointer to its
     82  * position, and confine_pointer for locking the pointer to a region.
     83  *
     84  * The lock_pointer and confine_pointer requests create the objects
     85  * wp_locked_pointer and wp_confined_pointer respectively, and the client can
     86  * use these objects to interact with the lock.
     87  *
     88  * For any surface, only one lock or confinement may be active across all
     89  * wl_pointer objects of the same seat. If a lock or confinement is requested
     90  * when another lock or confinement is active or requested on the same surface
     91  * and with any of the wl_pointer objects of the same seat, an
     92  * 'already_constrained' error will be raised.
     93  * @section page_iface_zwp_pointer_constraints_v1_api API
     94  * See @ref iface_zwp_pointer_constraints_v1.
     95  */
     96 /**
     97  * @defgroup iface_zwp_pointer_constraints_v1 The zwp_pointer_constraints_v1 interface
     98  *
     99  * The global interface exposing pointer constraining functionality. It
    100  * exposes two requests: lock_pointer for locking the pointer to its
    101  * position, and confine_pointer for locking the pointer to a region.
    102  *
    103  * The lock_pointer and confine_pointer requests create the objects
    104  * wp_locked_pointer and wp_confined_pointer respectively, and the client can
    105  * use these objects to interact with the lock.
    106  *
    107  * For any surface, only one lock or confinement may be active across all
    108  * wl_pointer objects of the same seat. If a lock or confinement is requested
    109  * when another lock or confinement is active or requested on the same surface
    110  * and with any of the wl_pointer objects of the same seat, an
    111  * 'already_constrained' error will be raised.
    112  */
    113 extern const struct wl_interface zwp_pointer_constraints_v1_interface;
    114 /**
    115  * @page page_iface_zwp_locked_pointer_v1 zwp_locked_pointer_v1
    116  * @section page_iface_zwp_locked_pointer_v1_desc Description
    117  *
    118  * The wp_locked_pointer interface represents a locked pointer state.
    119  *
    120  * While the lock of this object is active, the wl_pointer objects of the
    121  * associated seat will not emit any wl_pointer.motion events.
    122  *
    123  * This object will send the event 'locked' when the lock is activated.
    124  * Whenever the lock is activated, it is guaranteed that the locked surface
    125  * will already have received pointer focus and that the pointer will be
    126  * within the region passed to the request creating this object.
    127  *
    128  * To unlock the pointer, send the destroy request. This will also destroy
    129  * the wp_locked_pointer object.
    130  *
    131  * If the compositor decides to unlock the pointer the unlocked event is
    132  * sent. See wp_locked_pointer.unlock for details.
    133  *
    134  * When unlocking, the compositor may warp the cursor position to the set
    135  * cursor position hint. If it does, it will not result in any relative
    136  * motion events emitted via wp_relative_pointer.
    137  *
    138  * If the surface the lock was requested on is destroyed and the lock is not
    139  * yet activated, the wp_locked_pointer object is now defunct and must be
    140  * destroyed.
    141  * @section page_iface_zwp_locked_pointer_v1_api API
    142  * See @ref iface_zwp_locked_pointer_v1.
    143  */
    144 /**
    145  * @defgroup iface_zwp_locked_pointer_v1 The zwp_locked_pointer_v1 interface
    146  *
    147  * The wp_locked_pointer interface represents a locked pointer state.
    148  *
    149  * While the lock of this object is active, the wl_pointer objects of the
    150  * associated seat will not emit any wl_pointer.motion events.
    151  *
    152  * This object will send the event 'locked' when the lock is activated.
    153  * Whenever the lock is activated, it is guaranteed that the locked surface
    154  * will already have received pointer focus and that the pointer will be
    155  * within the region passed to the request creating this object.
    156  *
    157  * To unlock the pointer, send the destroy request. This will also destroy
    158  * the wp_locked_pointer object.
    159  *
    160  * If the compositor decides to unlock the pointer the unlocked event is
    161  * sent. See wp_locked_pointer.unlock for details.
    162  *
    163  * When unlocking, the compositor may warp the cursor position to the set
    164  * cursor position hint. If it does, it will not result in any relative
    165  * motion events emitted via wp_relative_pointer.
    166  *
    167  * If the surface the lock was requested on is destroyed and the lock is not
    168  * yet activated, the wp_locked_pointer object is now defunct and must be
    169  * destroyed.
    170  */
    171 extern const struct wl_interface zwp_locked_pointer_v1_interface;
    172 /**
    173  * @page page_iface_zwp_confined_pointer_v1 zwp_confined_pointer_v1
    174  * @section page_iface_zwp_confined_pointer_v1_desc Description
    175  *
    176  * The wp_confined_pointer interface represents a confined pointer state.
    177  *
    178  * This object will send the event 'confined' when the confinement is
    179  * activated. Whenever the confinement is activated, it is guaranteed that
    180  * the surface the pointer is confined to will already have received pointer
    181  * focus and that the pointer will be within the region passed to the request
    182  * creating this object. It is up to the compositor to decide whether this
    183  * requires some user interaction and if the pointer will warp to within the
    184  * passed region if outside.
    185  *
    186  * To unconfine the pointer, send the destroy request. This will also destroy
    187  * the wp_confined_pointer object.
    188  *
    189  * If the compositor decides to unconfine the pointer the unconfined event is
    190  * sent. The wp_confined_pointer object is at this point defunct and should
    191  * be destroyed.
    192  * @section page_iface_zwp_confined_pointer_v1_api API
    193  * See @ref iface_zwp_confined_pointer_v1.
    194  */
    195 /**
    196  * @defgroup iface_zwp_confined_pointer_v1 The zwp_confined_pointer_v1 interface
    197  *
    198  * The wp_confined_pointer interface represents a confined pointer state.
    199  *
    200  * This object will send the event 'confined' when the confinement is
    201  * activated. Whenever the confinement is activated, it is guaranteed that
    202  * the surface the pointer is confined to will already have received pointer
    203  * focus and that the pointer will be within the region passed to the request
    204  * creating this object. It is up to the compositor to decide whether this
    205  * requires some user interaction and if the pointer will warp to within the
    206  * passed region if outside.
    207  *
    208  * To unconfine the pointer, send the destroy request. This will also destroy
    209  * the wp_confined_pointer object.
    210  *
    211  * If the compositor decides to unconfine the pointer the unconfined event is
    212  * sent. The wp_confined_pointer object is at this point defunct and should
    213  * be destroyed.
    214  */
    215 extern const struct wl_interface zwp_confined_pointer_v1_interface;
    216 
    217 #ifndef ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM
    218 #define ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM
    219 /**
    220  * @ingroup iface_zwp_pointer_constraints_v1
    221  * wp_pointer_constraints error values
    222  *
    223  * These errors can be emitted in response to wp_pointer_constraints
    224  * requests.
    225  */
    226 enum zwp_pointer_constraints_v1_error {
    227 	/**
    228 	 * pointer constraint already requested on that surface
    229 	 */
    230 	ZWP_POINTER_CONSTRAINTS_V1_ERROR_ALREADY_CONSTRAINED = 1,
    231 };
    232 #endif /* ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM */
    233 
    234 #ifndef ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM
    235 #define ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM
    236 /**
    237  * @ingroup iface_zwp_pointer_constraints_v1
    238  * the pointer constraint may reactivate
    239  *
    240  * A persistent pointer constraint may again reactivate once it has
    241  * been deactivated. See the corresponding deactivation event
    242  * (wp_locked_pointer.unlocked and wp_confined_pointer.unconfined) for
    243  * details.
    244  */
    245 enum zwp_pointer_constraints_v1_lifetime {
    246 	ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT = 1,
    247 	ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT = 2,
    248 };
    249 #endif /* ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM */
    250 
    251 #define ZWP_POINTER_CONSTRAINTS_V1_DESTROY 0
    252 #define ZWP_POINTER_CONSTRAINTS_V1_LOCK_POINTER 1
    253 #define ZWP_POINTER_CONSTRAINTS_V1_CONFINE_POINTER 2
    254 
    255 
    256 /**
    257  * @ingroup iface_zwp_pointer_constraints_v1
    258  */
    259 #define ZWP_POINTER_CONSTRAINTS_V1_DESTROY_SINCE_VERSION 1
    260 /**
    261  * @ingroup iface_zwp_pointer_constraints_v1
    262  */
    263 #define ZWP_POINTER_CONSTRAINTS_V1_LOCK_POINTER_SINCE_VERSION 1
    264 /**
    265  * @ingroup iface_zwp_pointer_constraints_v1
    266  */
    267 #define ZWP_POINTER_CONSTRAINTS_V1_CONFINE_POINTER_SINCE_VERSION 1
    268 
    269 /** @ingroup iface_zwp_pointer_constraints_v1 */
    270 static inline void
    271 zwp_pointer_constraints_v1_set_user_data(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1, void *user_data)
    272 {
    273 	wl_proxy_set_user_data((struct wl_proxy *) zwp_pointer_constraints_v1, user_data);
    274 }
    275 
    276 /** @ingroup iface_zwp_pointer_constraints_v1 */
    277 static inline void *
    278 zwp_pointer_constraints_v1_get_user_data(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1)
    279 {
    280 	return wl_proxy_get_user_data((struct wl_proxy *) zwp_pointer_constraints_v1);
    281 }
    282 
    283 static inline uint32_t
    284 zwp_pointer_constraints_v1_get_version(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1)
    285 {
    286 	return wl_proxy_get_version((struct wl_proxy *) zwp_pointer_constraints_v1);
    287 }
    288 
    289 /**
    290  * @ingroup iface_zwp_pointer_constraints_v1
    291  *
    292  * Used by the client to notify the server that it will no longer use this
    293  * pointer constraints object.
    294  */
    295 static inline void
    296 zwp_pointer_constraints_v1_destroy(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1)
    297 {
    298 	wl_proxy_marshal((struct wl_proxy *) zwp_pointer_constraints_v1,
    299 			 ZWP_POINTER_CONSTRAINTS_V1_DESTROY);
    300 
    301 	wl_proxy_destroy((struct wl_proxy *) zwp_pointer_constraints_v1);
    302 }
    303 
    304 /**
    305  * @ingroup iface_zwp_pointer_constraints_v1
    306  *
    307  * The lock_pointer request lets the client request to disable movements of
    308  * the virtual pointer (i.e. the cursor), effectively locking the pointer
    309  * to a position. This request may not take effect immediately; in the
    310  * future, when the compositor deems implementation-specific constraints
    311  * are satisfied, the pointer lock will be activated and the compositor
    312  * sends a locked event.
    313  *
    314  * The protocol provides no guarantee that the constraints are ever
    315  * satisfied, and does not require the compositor to send an error if the
    316  * constraints cannot ever be satisfied. It is thus possible to request a
    317  * lock that will never activate.
    318  *
    319  * There may not be another pointer constraint of any kind requested or
    320  * active on the surface for any of the wl_pointer objects of the seat of
    321  * the passed pointer when requesting a lock. If there is, an error will be
    322  * raised. See general pointer lock documentation for more details.
    323  *
    324  * The intersection of the region passed with this request and the input
    325  * region of the surface is used to determine where the pointer must be
    326  * in order for the lock to activate. It is up to the compositor whether to
    327  * warp the pointer or require some kind of user interaction for the lock
    328  * to activate. If the region is null the surface input region is used.
    329  *
    330  * A surface may receive pointer focus without the lock being activated.
    331  *
    332  * The request creates a new object wp_locked_pointer which is used to
    333  * interact with the lock as well as receive updates about its state. See
    334  * the the description of wp_locked_pointer for further information.
    335  *
    336  * Note that while a pointer is locked, the wl_pointer objects of the
    337  * corresponding seat will not emit any wl_pointer.motion events, but
    338  * relative motion events will still be emitted via wp_relative_pointer
    339  * objects of the same seat. wl_pointer.axis and wl_pointer.button events
    340  * are unaffected.
    341  */
    342 static inline struct zwp_locked_pointer_v1 *
    343 zwp_pointer_constraints_v1_lock_pointer(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1, struct wl_surface *surface, struct wl_pointer *pointer, struct wl_region *region, uint32_t lifetime)
    344 {
    345 	struct wl_proxy *id;
    346 
    347 	id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_pointer_constraints_v1,
    348 			 ZWP_POINTER_CONSTRAINTS_V1_LOCK_POINTER, &zwp_locked_pointer_v1_interface, NULL, surface, pointer, region, lifetime);
    349 
    350 	return (struct zwp_locked_pointer_v1 *) id;
    351 }
    352 
    353 /**
    354  * @ingroup iface_zwp_pointer_constraints_v1
    355  *
    356  * The confine_pointer request lets the client request to confine the
    357  * pointer cursor to a given region. This request may not take effect
    358  * immediately; in the future, when the compositor deems implementation-
    359  * specific constraints are satisfied, the pointer confinement will be
    360  * activated and the compositor sends a confined event.
    361  *
    362  * The intersection of the region passed with this request and the input
    363  * region of the surface is used to determine where the pointer must be
    364  * in order for the confinement to activate. It is up to the compositor
    365  * whether to warp the pointer or require some kind of user interaction for
    366  * the confinement to activate. If the region is null the surface input
    367  * region is used.
    368  *
    369  * The request will create a new object wp_confined_pointer which is used
    370  * to interact with the confinement as well as receive updates about its
    371  * state. See the the description of wp_confined_pointer for further
    372  * information.
    373  */
    374 static inline struct zwp_confined_pointer_v1 *
    375 zwp_pointer_constraints_v1_confine_pointer(struct zwp_pointer_constraints_v1 *zwp_pointer_constraints_v1, struct wl_surface *surface, struct wl_pointer *pointer, struct wl_region *region, uint32_t lifetime)
    376 {
    377 	struct wl_proxy *id;
    378 
    379 	id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_pointer_constraints_v1,
    380 			 ZWP_POINTER_CONSTRAINTS_V1_CONFINE_POINTER, &zwp_confined_pointer_v1_interface, NULL, surface, pointer, region, lifetime);
    381 
    382 	return (struct zwp_confined_pointer_v1 *) id;
    383 }
    384 
    385 /**
    386  * @ingroup iface_zwp_locked_pointer_v1
    387  * @struct zwp_locked_pointer_v1_listener
    388  */
    389 struct zwp_locked_pointer_v1_listener {
    390 	/**
    391 	 * lock activation event
    392 	 *
    393 	 * Notification that the pointer lock of the seat's pointer is
    394 	 * activated.
    395 	 */
    396 	void (*locked)(void *data,
    397 		       struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1);
    398 	/**
    399 	 * lock deactivation event
    400 	 *
    401 	 * Notification that the pointer lock of the seat's pointer is no
    402 	 * longer active. If this is a oneshot pointer lock (see
    403 	 * wp_pointer_constraints.lifetime) this object is now defunct and
    404 	 * should be destroyed. If this is a persistent pointer lock (see
    405 	 * wp_pointer_constraints.lifetime) this pointer lock may again
    406 	 * reactivate in the future.
    407 	 */
    408 	void (*unlocked)(void *data,
    409 			 struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1);
    410 };
    411 
    412 /**
    413  * @ingroup iface_zwp_locked_pointer_v1
    414  */
    415 static inline int
    416 zwp_locked_pointer_v1_add_listener(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1,
    417 				   const struct zwp_locked_pointer_v1_listener *listener, void *data)
    418 {
    419 	return wl_proxy_add_listener((struct wl_proxy *) zwp_locked_pointer_v1,
    420 				     (void (**)(void)) listener, data);
    421 }
    422 
    423 #define ZWP_LOCKED_POINTER_V1_DESTROY 0
    424 #define ZWP_LOCKED_POINTER_V1_SET_CURSOR_POSITION_HINT 1
    425 #define ZWP_LOCKED_POINTER_V1_SET_REGION 2
    426 
    427 /**
    428  * @ingroup iface_zwp_locked_pointer_v1
    429  */
    430 #define ZWP_LOCKED_POINTER_V1_LOCKED_SINCE_VERSION 1
    431 /**
    432  * @ingroup iface_zwp_locked_pointer_v1
    433  */
    434 #define ZWP_LOCKED_POINTER_V1_UNLOCKED_SINCE_VERSION 1
    435 
    436 /**
    437  * @ingroup iface_zwp_locked_pointer_v1
    438  */
    439 #define ZWP_LOCKED_POINTER_V1_DESTROY_SINCE_VERSION 1
    440 /**
    441  * @ingroup iface_zwp_locked_pointer_v1
    442  */
    443 #define ZWP_LOCKED_POINTER_V1_SET_CURSOR_POSITION_HINT_SINCE_VERSION 1
    444 /**
    445  * @ingroup iface_zwp_locked_pointer_v1
    446  */
    447 #define ZWP_LOCKED_POINTER_V1_SET_REGION_SINCE_VERSION 1
    448 
    449 /** @ingroup iface_zwp_locked_pointer_v1 */
    450 static inline void
    451 zwp_locked_pointer_v1_set_user_data(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1, void *user_data)
    452 {
    453 	wl_proxy_set_user_data((struct wl_proxy *) zwp_locked_pointer_v1, user_data);
    454 }
    455 
    456 /** @ingroup iface_zwp_locked_pointer_v1 */
    457 static inline void *
    458 zwp_locked_pointer_v1_get_user_data(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1)
    459 {
    460 	return wl_proxy_get_user_data((struct wl_proxy *) zwp_locked_pointer_v1);
    461 }
    462 
    463 static inline uint32_t
    464 zwp_locked_pointer_v1_get_version(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1)
    465 {
    466 	return wl_proxy_get_version((struct wl_proxy *) zwp_locked_pointer_v1);
    467 }
    468 
    469 /**
    470  * @ingroup iface_zwp_locked_pointer_v1
    471  *
    472  * Destroy the locked pointer object. If applicable, the compositor will
    473  * unlock the pointer.
    474  */
    475 static inline void
    476 zwp_locked_pointer_v1_destroy(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1)
    477 {
    478 	wl_proxy_marshal((struct wl_proxy *) zwp_locked_pointer_v1,
    479 			 ZWP_LOCKED_POINTER_V1_DESTROY);
    480 
    481 	wl_proxy_destroy((struct wl_proxy *) zwp_locked_pointer_v1);
    482 }
    483 
    484 /**
    485  * @ingroup iface_zwp_locked_pointer_v1
    486  *
    487  * Set the cursor position hint relative to the top left corner of the
    488  * surface.
    489  *
    490  * If the client is drawing its own cursor, it should update the position
    491  * hint to the position of its own cursor. A compositor may use this
    492  * information to warp the pointer upon unlock in order to avoid pointer
    493  * jumps.
    494  *
    495  * The cursor position hint is double buffered. The new hint will only take
    496  * effect when the associated surface gets it pending state applied. See
    497  * wl_surface.commit for details.
    498  */
    499 static inline void
    500 zwp_locked_pointer_v1_set_cursor_position_hint(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1, wl_fixed_t surface_x, wl_fixed_t surface_y)
    501 {
    502 	wl_proxy_marshal((struct wl_proxy *) zwp_locked_pointer_v1,
    503 			 ZWP_LOCKED_POINTER_V1_SET_CURSOR_POSITION_HINT, surface_x, surface_y);
    504 }
    505 
    506 /**
    507  * @ingroup iface_zwp_locked_pointer_v1
    508  *
    509  * Set a new region used to lock the pointer.
    510  *
    511  * The new lock region is double-buffered. The new lock region will
    512  * only take effect when the associated surface gets its pending state
    513  * applied. See wl_surface.commit for details.
    514  *
    515  * For details about the lock region, see wp_locked_pointer.
    516  */
    517 static inline void
    518 zwp_locked_pointer_v1_set_region(struct zwp_locked_pointer_v1 *zwp_locked_pointer_v1, struct wl_region *region)
    519 {
    520 	wl_proxy_marshal((struct wl_proxy *) zwp_locked_pointer_v1,
    521 			 ZWP_LOCKED_POINTER_V1_SET_REGION, region);
    522 }
    523 
    524 /**
    525  * @ingroup iface_zwp_confined_pointer_v1
    526  * @struct zwp_confined_pointer_v1_listener
    527  */
    528 struct zwp_confined_pointer_v1_listener {
    529 	/**
    530 	 * pointer confined
    531 	 *
    532 	 * Notification that the pointer confinement of the seat's
    533 	 * pointer is activated.
    534 	 */
    535 	void (*confined)(void *data,
    536 			 struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1);
    537 	/**
    538 	 * pointer unconfined
    539 	 *
    540 	 * Notification that the pointer confinement of the seat's
    541 	 * pointer is no longer active. If this is a oneshot pointer
    542 	 * confinement (see wp_pointer_constraints.lifetime) this object is
    543 	 * now defunct and should be destroyed. If this is a persistent
    544 	 * pointer confinement (see wp_pointer_constraints.lifetime) this
    545 	 * pointer confinement may again reactivate in the future.
    546 	 */
    547 	void (*unconfined)(void *data,
    548 			   struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1);
    549 };
    550 
    551 /**
    552  * @ingroup iface_zwp_confined_pointer_v1
    553  */
    554 static inline int
    555 zwp_confined_pointer_v1_add_listener(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1,
    556 				     const struct zwp_confined_pointer_v1_listener *listener, void *data)
    557 {
    558 	return wl_proxy_add_listener((struct wl_proxy *) zwp_confined_pointer_v1,
    559 				     (void (**)(void)) listener, data);
    560 }
    561 
    562 #define ZWP_CONFINED_POINTER_V1_DESTROY 0
    563 #define ZWP_CONFINED_POINTER_V1_SET_REGION 1
    564 
    565 /**
    566  * @ingroup iface_zwp_confined_pointer_v1
    567  */
    568 #define ZWP_CONFINED_POINTER_V1_CONFINED_SINCE_VERSION 1
    569 /**
    570  * @ingroup iface_zwp_confined_pointer_v1
    571  */
    572 #define ZWP_CONFINED_POINTER_V1_UNCONFINED_SINCE_VERSION 1
    573 
    574 /**
    575  * @ingroup iface_zwp_confined_pointer_v1
    576  */
    577 #define ZWP_CONFINED_POINTER_V1_DESTROY_SINCE_VERSION 1
    578 /**
    579  * @ingroup iface_zwp_confined_pointer_v1
    580  */
    581 #define ZWP_CONFINED_POINTER_V1_SET_REGION_SINCE_VERSION 1
    582 
    583 /** @ingroup iface_zwp_confined_pointer_v1 */
    584 static inline void
    585 zwp_confined_pointer_v1_set_user_data(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1, void *user_data)
    586 {
    587 	wl_proxy_set_user_data((struct wl_proxy *) zwp_confined_pointer_v1, user_data);
    588 }
    589 
    590 /** @ingroup iface_zwp_confined_pointer_v1 */
    591 static inline void *
    592 zwp_confined_pointer_v1_get_user_data(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1)
    593 {
    594 	return wl_proxy_get_user_data((struct wl_proxy *) zwp_confined_pointer_v1);
    595 }
    596 
    597 static inline uint32_t
    598 zwp_confined_pointer_v1_get_version(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1)
    599 {
    600 	return wl_proxy_get_version((struct wl_proxy *) zwp_confined_pointer_v1);
    601 }
    602 
    603 /**
    604  * @ingroup iface_zwp_confined_pointer_v1
    605  *
    606  * Destroy the confined pointer object. If applicable, the compositor will
    607  * unconfine the pointer.
    608  */
    609 static inline void
    610 zwp_confined_pointer_v1_destroy(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1)
    611 {
    612 	wl_proxy_marshal((struct wl_proxy *) zwp_confined_pointer_v1,
    613 			 ZWP_CONFINED_POINTER_V1_DESTROY);
    614 
    615 	wl_proxy_destroy((struct wl_proxy *) zwp_confined_pointer_v1);
    616 }
    617 
    618 /**
    619  * @ingroup iface_zwp_confined_pointer_v1
    620  *
    621  * Set a new region used to confine the pointer.
    622  *
    623  * The new confine region is double-buffered. The new confine region will
    624  * only take effect when the associated surface gets its pending state
    625  * applied. See wl_surface.commit for details.
    626  *
    627  * If the confinement is active when the new confinement region is applied
    628  * and the pointer ends up outside of newly applied region, the pointer may
    629  * warped to a position within the new confinement region. If warped, a
    630  * wl_pointer.motion event will be emitted, but no
    631  * wp_relative_pointer.relative_motion event.
    632  *
    633  * The compositor may also, instead of using the new region, unconfine the
    634  * pointer.
    635  *
    636  * For details about the confine region, see wp_confined_pointer.
    637  */
    638 static inline void
    639 zwp_confined_pointer_v1_set_region(struct zwp_confined_pointer_v1 *zwp_confined_pointer_v1, struct wl_region *region)
    640 {
    641 	wl_proxy_marshal((struct wl_proxy *) zwp_confined_pointer_v1,
    642 			 ZWP_CONFINED_POINTER_V1_SET_REGION, region);
    643 }
    644 
    645 #ifdef  __cplusplus
    646 }
    647 #endif
    648 
    649 #endif