/* Generated by wayland-scanner 1.26.0 */

#ifndef MUTTER_X11_INTEROP_CLIENT_PROTOCOL_H
#define MUTTER_X11_INTEROP_CLIENT_PROTOCOL_H

#include <stdint.h>
#include <stddef.h>
#include "wayland-client.h"

#ifdef  __cplusplus
extern "C" {
#endif

/**
 * @page page_mutter_x11_interop The mutter_x11_interop protocol
 * X11 interoperability helper
 *
 * @section page_desc_mutter_x11_interop Description
 *
 * This protocol is intended to be used by the portal backend to map Wayland
 * dialogs as modal dialogs on top of X11 windows.
 *
 * @section page_ifaces_mutter_x11_interop Interfaces
 * - @subpage page_iface_mutter_x11_interop - X11 interoperability helper
 */
struct mutter_x11_interop;
struct wl_surface;

#ifndef MUTTER_X11_INTEROP_INTERFACE
#define MUTTER_X11_INTEROP_INTERFACE
/**
 * @page page_iface_mutter_x11_interop mutter_x11_interop
 * @section page_iface_mutter_x11_interop_desc Description
 * @section page_iface_mutter_x11_interop_api API
 * See @ref iface_mutter_x11_interop.
 */
/**
 * @defgroup iface_mutter_x11_interop The mutter_x11_interop interface
 */
extern const struct wl_interface mutter_x11_interop_interface;
#endif

#define MUTTER_X11_INTEROP_DESTROY 0
#define MUTTER_X11_INTEROP_SET_X11_PARENT 1


/**
 * @ingroup iface_mutter_x11_interop
 */
#define MUTTER_X11_INTEROP_DESTROY_SINCE_VERSION 1
/**
 * @ingroup iface_mutter_x11_interop
 */
#define MUTTER_X11_INTEROP_SET_X11_PARENT_SINCE_VERSION 1

/** @ingroup iface_mutter_x11_interop */
static inline void
mutter_x11_interop_set_user_data(struct mutter_x11_interop *mutter_x11_interop, void *user_data)
{
	wl_proxy_set_user_data((struct wl_proxy *) mutter_x11_interop, user_data);
}

/** @ingroup iface_mutter_x11_interop */
static inline void *
mutter_x11_interop_get_user_data(struct mutter_x11_interop *mutter_x11_interop)
{
	return wl_proxy_get_user_data((struct wl_proxy *) mutter_x11_interop);
}

static inline uint32_t
mutter_x11_interop_get_version(struct mutter_x11_interop *mutter_x11_interop)
{
	return wl_proxy_get_version((struct wl_proxy *) mutter_x11_interop);
}

/**
 * @ingroup iface_mutter_x11_interop
 */
static inline void
mutter_x11_interop_destroy(struct mutter_x11_interop *mutter_x11_interop)
{
	wl_proxy_marshal_flags((struct wl_proxy *) mutter_x11_interop,
			 MUTTER_X11_INTEROP_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) mutter_x11_interop), WL_MARSHAL_FLAG_DESTROY);
}

/**
 * @ingroup iface_mutter_x11_interop
 */
static inline void
mutter_x11_interop_set_x11_parent(struct mutter_x11_interop *mutter_x11_interop, struct wl_surface *surface, uint32_t xwindow)
{
	wl_proxy_marshal_flags((struct wl_proxy *) mutter_x11_interop,
			 MUTTER_X11_INTEROP_SET_X11_PARENT, NULL, wl_proxy_get_version((struct wl_proxy *) mutter_x11_interop), 0, surface, xwindow);
}

#ifdef  __cplusplus
}
#endif

#endif
