summaryrefslogtreecommitdiffstats
path: root/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h
Add the files
Diffstat (limited to 'src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h')
-rw-r--r--src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h1384
1 files changed, 1384 insertions, 0 deletions
diff --git a/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h b/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h
new file mode 100644
index 0000000..44ab8ab
--- /dev/null
+++ b/src/detection/displayserver/linux/wayland/kde-output-device-v2-client-protocol.h
@@ -0,0 +1,1384 @@
+/* Generated by wayland-scanner 1.24.0 */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_CLIENT_PROTOCOL_H
+#define KDE_OUTPUT_DEVICE_V2_CLIENT_PROTOCOL_H
+
+#include <stdint.h>
+#include <stddef.h>
+#include <wayland-client.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @page page_kde_output_device_v2 The kde_output_device_v2 protocol
+ * @section page_ifaces_kde_output_device_v2 Interfaces
+ * - @subpage page_iface_kde_output_device_registry_v2 - output devices
+ * - @subpage page_iface_kde_output_device_v2 - output configuration representation
+ * - @subpage page_iface_kde_output_device_mode_v2 - output mode
+ * @section page_copyright_kde_output_device_v2 Copyright
+ * <pre>
+ *
+ * SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
+ * SPDX-FileCopyrightText: 2010-2011 Intel Corporation
+ * SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
+ * SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
+ * SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com>
+ *
+ * SPDX-License-Identifier: MIT-CMU
+ * </pre>
+ */
+struct kde_output_device_mode_v2;
+struct kde_output_device_registry_v2;
+struct kde_output_device_v2;
+
+#ifndef KDE_OUTPUT_DEVICE_REGISTRY_V2_INTERFACE
+ #define KDE_OUTPUT_DEVICE_REGISTRY_V2_INTERFACE
+/**
+ * @page page_iface_kde_output_device_registry_v2 kde_output_device_registry_v2
+ * @section page_iface_kde_output_device_registry_v2_desc Description
+ *
+ * This interface can be used to list output devices.
+ *
+ * If this global is bound with a version less than 21, the unsupported_version
+ * protocol error will be posted.
+ * @section page_iface_kde_output_device_registry_v2_api API
+ * See @ref iface_kde_output_device_registry_v2.
+ */
+/**
+ * @defgroup iface_kde_output_device_registry_v2 The kde_output_device_registry_v2 interface
+ *
+ * This interface can be used to list output devices.
+ *
+ * If this global is bound with a version less than 21, the unsupported_version
+ * protocol error will be posted.
+ */
+extern const struct wl_interface kde_output_device_registry_v2_interface;
+#endif
+#ifndef KDE_OUTPUT_DEVICE_V2_INTERFACE
+ #define KDE_OUTPUT_DEVICE_V2_INTERFACE
+/**
+ * @page page_iface_kde_output_device_v2 kde_output_device_v2
+ * @section page_iface_kde_output_device_v2_desc Description
+ *
+ * An output device describes a display device available to the compositor.
+ * output_device is similar to wl_output, but focuses on output
+ * configuration management.
+ *
+ * A client can query all global output_device objects to enlist all
+ * available display devices, even those that may currently not be
+ * represented by the compositor as a wl_output.
+ *
+ * The client sends configuration changes to the server through the
+ * outputconfiguration interface, and the server applies the configuration
+ * changes to the hardware and signals changes to the output devices
+ * accordingly.
+ *
+ * This object is published as global during start up for every available
+ * display devices, or when one later becomes available, for example by
+ * being hotplugged via a physical connector.
+ *
+ * Warning! The protocol described in this file is a desktop environment
+ * implementation detail. Regular clients must not use this protocol.
+ * Backward incompatible changes may be added without bumping the major
+ * version of the extension.
+ * @section page_iface_kde_output_device_v2_api API
+ * See @ref iface_kde_output_device_v2.
+ */
+/**
+ * @defgroup iface_kde_output_device_v2 The kde_output_device_v2 interface
+ *
+ * An output device describes a display device available to the compositor.
+ * output_device is similar to wl_output, but focuses on output
+ * configuration management.
+ *
+ * A client can query all global output_device objects to enlist all
+ * available display devices, even those that may currently not be
+ * represented by the compositor as a wl_output.
+ *
+ * The client sends configuration changes to the server through the
+ * outputconfiguration interface, and the server applies the configuration
+ * changes to the hardware and signals changes to the output devices
+ * accordingly.
+ *
+ * This object is published as global during start up for every available
+ * display devices, or when one later becomes available, for example by
+ * being hotplugged via a physical connector.
+ *
+ * Warning! The protocol described in this file is a desktop environment
+ * implementation detail. Regular clients must not use this protocol.
+ * Backward incompatible changes may be added without bumping the major
+ * version of the extension.
+ */
+extern const struct wl_interface kde_output_device_v2_interface;
+#endif
+#ifndef KDE_OUTPUT_DEVICE_MODE_V2_INTERFACE
+ #define KDE_OUTPUT_DEVICE_MODE_V2_INTERFACE
+/**
+ * @page page_iface_kde_output_device_mode_v2 kde_output_device_mode_v2
+ * @section page_iface_kde_output_device_mode_v2_desc Description
+ *
+ * This object describes an output mode.
+ *
+ * Some heads don't support output modes, in which case modes won't be
+ * advertised.
+ *
+ * Properties sent via this interface are applied atomically via the
+ * kde_output_device.done event. No guarantees are made regarding the order
+ * in which properties are sent.
+ * @section page_iface_kde_output_device_mode_v2_api API
+ * See @ref iface_kde_output_device_mode_v2.
+ */
+/**
+ * @defgroup iface_kde_output_device_mode_v2 The kde_output_device_mode_v2 interface
+ *
+ * This object describes an output mode.
+ *
+ * Some heads don't support output modes, in which case modes won't be
+ * advertised.
+ *
+ * Properties sent via this interface are applied atomically via the
+ * kde_output_device.done event. No guarantees are made regarding the order
+ * in which properties are sent.
+ */
+extern const struct wl_interface kde_output_device_mode_v2_interface;
+#endif
+
+#ifndef KDE_OUTPUT_DEVICE_REGISTRY_V2_ERROR_ENUM
+ #define KDE_OUTPUT_DEVICE_REGISTRY_V2_ERROR_ENUM
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ * kde_output_device_registry_v2 error values
+ *
+ * These errors can be emitted in response to some requests.
+ */
+enum kde_output_device_registry_v2_error {
+ /**
+ * the registry was bound with an unsupported version
+ */
+ KDE_OUTPUT_DEVICE_REGISTRY_V2_ERROR_UNSUPPORTED_VERSION = 0,
+};
+#endif /* KDE_OUTPUT_DEVICE_REGISTRY_V2_ERROR_ENUM */
+
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ * @struct kde_output_device_registry_v2_listener
+ */
+struct kde_output_device_registry_v2_listener {
+ /**
+ * no new output announcements
+ *
+ * This event is sent in response to the stop request. The
+ * compositor will immediately destroy the object after sending
+ * this event.
+ * @since 21
+ */
+ void (*finished)(void* data,
+ struct kde_output_device_registry_v2* kde_output_device_registry_v2);
+ /**
+ * new available output
+ *
+ * This event is sent when a new output is connected or after
+ * binding this global to list all available outputs.
+ * @since 21
+ */
+ void (*output)(void* data,
+ struct kde_output_device_registry_v2* kde_output_device_registry_v2,
+ struct kde_output_device_v2* output);
+};
+
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ */
+static inline int
+kde_output_device_registry_v2_add_listener(struct kde_output_device_registry_v2* kde_output_device_registry_v2,
+ const struct kde_output_device_registry_v2_listener* listener,
+ void* data) {
+ return wl_proxy_add_listener((struct wl_proxy*) kde_output_device_registry_v2,
+ (void (**)(void)) listener,
+ data);
+}
+
+#define KDE_OUTPUT_DEVICE_REGISTRY_V2_STOP 0
+
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ */
+#define KDE_OUTPUT_DEVICE_REGISTRY_V2_FINISHED_SINCE_VERSION 21
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ */
+#define KDE_OUTPUT_DEVICE_REGISTRY_V2_OUTPUT_SINCE_VERSION 21
+
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ */
+#define KDE_OUTPUT_DEVICE_REGISTRY_V2_STOP_SINCE_VERSION 21
+
+/** @ingroup iface_kde_output_device_registry_v2 */
+static inline void
+kde_output_device_registry_v2_set_user_data(struct kde_output_device_registry_v2* kde_output_device_registry_v2, void* user_data) {
+ wl_proxy_set_user_data((struct wl_proxy*) kde_output_device_registry_v2, user_data);
+}
+
+/** @ingroup iface_kde_output_device_registry_v2 */
+static inline void*
+kde_output_device_registry_v2_get_user_data(struct kde_output_device_registry_v2* kde_output_device_registry_v2) {
+ return wl_proxy_get_user_data((struct wl_proxy*) kde_output_device_registry_v2);
+}
+
+static inline uint32_t
+kde_output_device_registry_v2_get_version(struct kde_output_device_registry_v2* kde_output_device_registry_v2) {
+ return wl_proxy_get_version((struct wl_proxy*) kde_output_device_registry_v2);
+}
+
+/** @ingroup iface_kde_output_device_registry_v2 */
+static inline void
+kde_output_device_registry_v2_destroy(struct kde_output_device_registry_v2* kde_output_device_registry_v2) {
+ wl_proxy_destroy((struct wl_proxy*) kde_output_device_registry_v2);
+}
+
+/**
+ * @ingroup iface_kde_output_device_registry_v2
+ *
+ * This request indicates that the client no longer wants to receive new
+ * output announcements. The compositor will send the
+ * kde_output_device_registry_v2.finished event in response to this request.
+ * The compositor may still send new output announcements after calling this
+ * request until the kde_output_device_registry_v2.finished event is sent.
+ */
+// static inline void
+// kde_output_device_registry_v2_stop(struct kde_output_device_registry_v2* kde_output_device_registry_v2) {
+// wl_proxy_marshal_flags((struct wl_proxy*) kde_output_device_registry_v2,
+// KDE_OUTPUT_DEVICE_REGISTRY_V2_STOP,
+// NULL,
+// wl_proxy_get_version((struct wl_proxy*) kde_output_device_registry_v2),
+// 0);
+// }
+
+#ifndef KDE_OUTPUT_DEVICE_V2_SUBPIXEL_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_SUBPIXEL_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * subpixel geometry information
+ *
+ * This enumeration describes how the physical pixels on an output are
+ * laid out.
+ */
+enum kde_output_device_v2_subpixel {
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_UNKNOWN = 0,
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_NONE = 1,
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_HORIZONTAL_RGB = 2,
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_HORIZONTAL_BGR = 3,
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_VERTICAL_RGB = 4,
+ KDE_OUTPUT_DEVICE_V2_SUBPIXEL_VERTICAL_BGR = 5,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_SUBPIXEL_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_TRANSFORM_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_TRANSFORM_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * transform from framebuffer to output
+ *
+ * This describes the transform, that a compositor will apply to a
+ * surface to compensate for the rotation or mirroring of an
+ * output device.
+ *
+ * The flipped values correspond to an initial flip around a
+ * vertical axis followed by rotation.
+ *
+ * The purpose is mainly to allow clients to render accordingly and
+ * tell the compositor, so that for fullscreen surfaces, the
+ * compositor is still able to scan out directly client surfaces.
+ */
+enum kde_output_device_v2_transform {
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_NORMAL = 0,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_90 = 1,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_180 = 2,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_270 = 3,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_FLIPPED = 4,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_FLIPPED_90 = 5,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_FLIPPED_180 = 6,
+ KDE_OUTPUT_DEVICE_V2_TRANSFORM_FLIPPED_270 = 7,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_TRANSFORM_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_CAPABILITY_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * describes capabilities of the outputdevice
+ *
+ * Describes what capabilities this device has.
+ */
+enum kde_output_device_v2_capability {
+ /**
+ * if this output_device can use overscan
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_OVERSCAN = 0x1,
+ /**
+ * if this outputdevice supports variable refresh rate
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_VRR = 0x2,
+ /**
+ * if setting the rgb range is possible
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_RGB_RANGE = 0x4,
+ /**
+ * if this outputdevice supports high dynamic range
+ * @since 3
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_HIGH_DYNAMIC_RANGE = 0x8,
+ /**
+ * if this outputdevice supports a wide color gamut
+ * @since 3
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_WIDE_COLOR_GAMUT = 0x10,
+ /**
+ * if this outputdevice supports autorotation
+ * @since 4
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_AUTO_ROTATE = 0x20,
+ /**
+ * if this outputdevice supports icc profiles
+ * @since 5
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_ICC_PROFILE = 0x40,
+ /**
+ * if this outputdevice supports the brightness setting
+ * @since 9
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_BRIGHTNESS = 0x80,
+ /**
+ * if this outputdevice supports the built-in color profile
+ * @since 12
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_BUILT_IN_COLOR = 0x100,
+ /**
+ * if this outputdevice supports DDC/CI
+ * @since 14
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_DDC_CI = 0x200,
+ /**
+ * if this outputdevice supports setting max bpc
+ * @since 15
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_MAX_BITS_PER_COLOR = 0x400,
+ /**
+ * if this outputdevice supports EDR
+ * @since 16
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_EDR = 0x800,
+ /**
+ * if this outputdevice supports the sharpness setting
+ * @since 17
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_SHARPNESS = 0x1000,
+ /**
+ * if this outputdevice supports custom modes
+ * @since 18
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_CUSTOM_MODES = 0x2000,
+ /**
+ * @since 19
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_AUTO_BRIGHTNESS = 0x4000,
+ /**
+ * if this outputdevice supports HDR ICC profiles
+ * @since 22
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_HDR_ICC_PROFILE = 0x8000,
+ /**
+ * if this outputdevice supports the abm level setting
+ * @since 23
+ */
+ KDE_OUTPUT_DEVICE_V2_CAPABILITY_ABM_LEVEL = 0x10000,
+};
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_HIGH_DYNAMIC_RANGE_SINCE_VERSION 3
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_WIDE_COLOR_GAMUT_SINCE_VERSION 3
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_AUTO_ROTATE_SINCE_VERSION 4
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_ICC_PROFILE_SINCE_VERSION 5
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_BRIGHTNESS_SINCE_VERSION 9
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_BUILT_IN_COLOR_SINCE_VERSION 12
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_DDC_CI_SINCE_VERSION 14
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_MAX_BITS_PER_COLOR_SINCE_VERSION 15
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_EDR_SINCE_VERSION 16
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_SHARPNESS_SINCE_VERSION 17
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_CUSTOM_MODES_SINCE_VERSION 18
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_AUTO_BRIGHTNESS_SINCE_VERSION 19
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_HDR_ICC_PROFILE_SINCE_VERSION 22
+ /**
+ * @ingroup iface_kde_output_device_v2
+ */
+ #define KDE_OUTPUT_DEVICE_V2_CAPABILITY_ABM_LEVEL_SINCE_VERSION 23
+#endif /* KDE_OUTPUT_DEVICE_V2_CAPABILITY_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_VRR_POLICY_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_VRR_POLICY_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * describes vrr policy
+ *
+ * Describes when the compositor may employ variable refresh rate
+ */
+enum kde_output_device_v2_vrr_policy {
+ KDE_OUTPUT_DEVICE_V2_VRR_POLICY_NEVER = 0,
+ KDE_OUTPUT_DEVICE_V2_VRR_POLICY_ALWAYS = 1,
+ KDE_OUTPUT_DEVICE_V2_VRR_POLICY_AUTOMATIC = 2,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_VRR_POLICY_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_RGB_RANGE_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_RGB_RANGE_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * describes RGB range policy
+ *
+ * Whether full or limited color range should be used
+ */
+enum kde_output_device_v2_rgb_range {
+ KDE_OUTPUT_DEVICE_V2_RGB_RANGE_AUTOMATIC = 0,
+ KDE_OUTPUT_DEVICE_V2_RGB_RANGE_FULL = 1,
+ KDE_OUTPUT_DEVICE_V2_RGB_RANGE_LIMITED = 2,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_RGB_RANGE_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * describes when auto rotate should be used
+ */
+enum kde_output_device_v2_auto_rotate_policy {
+ KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_NEVER = 0,
+ KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_IN_TABLET_MODE = 1,
+ KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_ALWAYS = 2,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * which source the compositor should use for the color profile on an output
+ */
+enum kde_output_device_v2_color_profile_source {
+ KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_SRGB = 0,
+ KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_ICC = 1,
+ KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_EDID = 2,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * tradeoff between power and accuracy
+ *
+ * The compositor can do a lot of things that trade between
+ * performance, power and color accuracy. This setting describes
+ * a high level preference from the user about in which direction
+ * that tradeoff should be made.
+ */
+enum kde_output_device_v2_color_power_tradeoff {
+ /**
+ * prefer efficiency and performance
+ */
+ KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_EFFICIENCY = 0,
+ /**
+ * prefer accuracy
+ */
+ KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_ACCURACY = 1,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_ENUM */
+
+#ifndef KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM
+ #define KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM
+/**
+ * @ingroup iface_kde_output_device_v2
+ * when the compositor may make use of EDR
+ */
+enum kde_output_device_v2_edr_policy {
+ KDE_OUTPUT_DEVICE_V2_EDR_POLICY_NEVER = 0,
+ KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ALWAYS = 1,
+};
+#endif /* KDE_OUTPUT_DEVICE_V2_EDR_POLICY_ENUM */
+
+/**
+ * @ingroup iface_kde_output_device_v2
+ * @struct kde_output_device_v2_listener
+ */
+struct kde_output_device_v2_listener {
+ /**
+ * geometric properties of the output
+ *
+ * The geometry event describes geometric properties of the
+ * output. The event is sent when binding to the output object and
+ * whenever any of the properties change.
+ * @param x x position within the global compositor space
+ * @param y y position within the global compositor space
+ * @param physical_width width in millimeters of the output
+ * @param physical_height height in millimeters of the output
+ * @param subpixel subpixel orientation of the output
+ * @param make textual description of the manufacturer
+ * @param model textual description of the model
+ * @param transform transform that maps framebuffer to output
+ */
+ void (*geometry)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ int32_t x,
+ int32_t y,
+ int32_t physical_width,
+ int32_t physical_height,
+ int32_t subpixel,
+ const char* make,
+ const char* model,
+ int32_t transform);
+ /**
+ * current mode
+ *
+ * This event describes the mode currently in use for this head.
+ * It is only sent if the output is enabled.
+ */
+ void (*current_mode)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ struct kde_output_device_mode_v2* mode);
+ /**
+ * advertise available output modes and current one
+ *
+ * The mode event describes an available mode for the output.
+ *
+ * When the client binds to the output_device object, the server
+ * sends this event once for every available mode the output_device
+ * can be operated by.
+ *
+ * There will always be at least one event sent out on initial
+ * binding, which represents the current mode.
+ *
+ * Later if an output changes, its mode event is sent again for the
+ * eventual added modes and lastly the current mode. In other
+ * words, the current mode is always represented by the latest
+ * event sent with the current flag set.
+ *
+ * The size of a mode is given in physical hardware units of the
+ * output device. This is not necessarily the same as the output
+ * size in the global compositor space. For instance, the output
+ * may be scaled, as described in kde_output_device_v2.scale, or
+ * transformed, as described in kde_output_device_v2.transform.
+ */
+ void (*mode)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ struct kde_output_device_mode_v2* mode);
+ /**
+ * sent all information about output
+ *
+ * This event is sent after all other properties have been sent
+ * on binding to the output object as well as after any other
+ * output property change have been applied later on. This allows
+ * to see changes to the output properties as atomic, even if
+ * multiple events successively announce them.
+ */
+ void (*done)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2);
+ /**
+ * output scaling properties
+ *
+ * This event contains scaling geometry information that is not
+ * in the geometry event. It may be sent after binding the output
+ * object or if the output scale changes later. If it is not sent,
+ * the client should assume a scale of 1.
+ *
+ * A scale larger than 1 means that the compositor will
+ * automatically scale surface buffers by this amount when
+ * rendering. This is used for high resolution displays where
+ * applications rendering at the native resolution would be too
+ * small to be legible.
+ *
+ * It is intended that scaling aware clients track the current
+ * output of a surface, and if it is on a scaled output it should
+ * use wl_surface.set_buffer_scale with the scale of the output.
+ * That way the compositor can avoid scaling the surface, and the
+ * client can supply a higher detail image.
+ * @param factor scaling factor of output
+ */
+ void (*scale)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ wl_fixed_t factor);
+ /**
+ * advertise EDID data for the output
+ *
+ * The edid event encapsulates the EDID data for the
+ * outputdevice.
+ *
+ * The event is sent when binding to the output object. The EDID
+ * data may be empty, in which case this event is sent anyway. If
+ * the EDID information is empty, you can fall back to the name et
+ * al. properties of the outputdevice.
+ * @param raw base64-encoded EDID string
+ */
+ void (*edid)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* raw);
+ /**
+ * output is enabled or disabled
+ *
+ * The enabled event notifies whether this output is currently
+ * enabled and used for displaying content by the server. The event
+ * is sent when binding to the output object and whenever later on
+ * an output changes its state by becoming enabled or disabled.
+ * @param enabled output enabled state
+ */
+ void (*enabled)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ int32_t enabled);
+ /**
+ * A unique id for this outputdevice
+ *
+ * The uuid can be used to identify the output. It's controlled
+ * by the server entirely. The server should make sure the uuid is
+ * persistent across restarts. An empty uuid is considered invalid.
+ * @param uuid output devices ID
+ */
+ void (*uuid)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* uuid);
+ /**
+ * Serial Number
+ *
+ * Serial ID of the monitor, sent on startup before the first
+ * done event.
+ * @param serialNumber textual representation of serial number
+ */
+ void (*serial_number)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* serialNumber);
+ /**
+ * EISA ID
+ *
+ * EISA ID of the monitor, sent on startup before the first done
+ * event.
+ * @param eisaId textual representation of EISA identifier
+ */
+ void (*eisa_id)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* eisaId);
+ /**
+ * capability flags
+ *
+ * What capabilities this device has, sent on startup before the
+ * first done event.
+ */
+ void (*capabilities)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t flags);
+ /**
+ * overscan
+ *
+ * Overscan value of the monitor in percent, sent on startup
+ * before the first done event.
+ * @param overscan amount of overscan of the monitor
+ */
+ void (*overscan)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t overscan);
+ /**
+ * Variable Refresh Rate Policy
+ *
+ * What policy the compositor will employ regarding its use of
+ * variable refresh rate.
+ */
+ void (*vrr_policy)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t vrr_policy);
+ /**
+ * RGB range
+ *
+ * What rgb range the compositor is using for this output
+ */
+ void (*rgb_range)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t rgb_range);
+ /**
+ * Output's name
+ *
+ * Name of the output, it's useful to cross-reference to an
+ * zxdg_output_v1 and ultimately QScreen
+ * @since 2
+ */
+ void (*name)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* name);
+ /**
+ * if HDR is enabled
+ *
+ * Whether or not high dynamic range is enabled for this output
+ * @param hdr_enabled 1 if enabled, 0 if disabled
+ * @since 3
+ */
+ void (*high_dynamic_range)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t hdr_enabled);
+ /**
+ * the brightness of sdr if hdr is enabled
+ *
+ * If high dynamic range is used, this value defines the
+ * brightness in nits for content that's in standard dynamic range
+ * format. Note that while the value is in nits, that doesn't
+ * necessarily translate to the same brightness on the screen.
+ * @since 3
+ */
+ void (*sdr_brightness)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t sdr_brightness);
+ /**
+ * if WCG is enabled
+ *
+ * Whether or not the use of a wide color gamut is enabled for
+ * this output
+ * @param wcg_enabled 1 if enabled, 0 if disabled
+ * @since 3
+ */
+ void (*wide_color_gamut)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t wcg_enabled);
+ /**
+ * describes when auto rotate is used
+ *
+ *
+ * @since 4
+ */
+ void (*auto_rotate_policy)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t policy);
+ /**
+ * describes the path to the ICC profile used in SDR mode
+ *
+ *
+ * @since 5
+ */
+ void (*icc_profile_path)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* profile_path);
+ /**
+ * metadata about the screen's brightness limits
+ *
+ *
+ * @param max_peak_brightness in nits
+ * @param max_frame_average_brightness in nits
+ * @param min_brightness in 0.0001 nits
+ * @since 6
+ */
+ void (*brightness_metadata)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t max_peak_brightness,
+ uint32_t max_frame_average_brightness,
+ uint32_t min_brightness);
+ /**
+ * overrides for the screen's brightness limits
+ *
+ *
+ * @param max_peak_brightness -1 for no override, positive values are the brightness in nits
+ * @param max_average_brightness -1 for no override, positive values are the brightness in nits
+ * @param min_brightness -1 for no override, positive values are the brightness in 0.0001 nits
+ * @since 6
+ */
+ void (*brightness_overrides)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ int32_t max_peak_brightness,
+ int32_t max_average_brightness,
+ int32_t min_brightness);
+ /**
+ * describes which gamut is assumed for sRGB applications
+ *
+ * This can be used to provide the colors users assume sRGB
+ * applications should have based on the default experience on many
+ * modern sRGB screens.
+ * @param gamut_wideness 0 means rec.709 primaries, 10000 means native primaries
+ * @since 6
+ */
+ void (*sdr_gamut_wideness)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t gamut_wideness);
+ /**
+ * describes which source the compositor uses for the color profile on an output in SDR mode
+ *
+ *
+ * @since 7
+ */
+ void (*color_profile_source)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t source);
+ /**
+ * brightness multiplier
+ *
+ * This is the brightness modifier of the output. It doesn't
+ * specify any absolute values, but is merely a multiplier on top
+ * of other brightness values, like sdr_brightness and
+ * brightness_metadata. 0 is the minimum brightness (not completely
+ * dark) and 10000 is the maximum brightness. This is currently
+ * only supported / meaningful while HDR is active.
+ * @param brightness brightness in 0-10000
+ * @since 8
+ */
+ void (*brightness)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t brightness);
+ /**
+ * the preferred color/power tradeoff
+ *
+ *
+ * @since 10
+ */
+ void (*color_power_tradeoff)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t preference);
+ /**
+ * dimming multiplier
+ *
+ * This is the dimming multiplier of the output. This is similar
+ * to the brightness setting, except it's meant to be a temporary
+ * setting only, not persistent and may be implemented differently
+ * depending on the display. 0 is the minimum dimming factor (not
+ * completely dark) and 10000 means the output is not dimmed.
+ * @param multiplier multiplier in 0-10000
+ * @since 11
+ */
+ void (*dimming)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t multiplier);
+ /**
+ * source output for mirroring
+ *
+ *
+ * @param source uuid of the source output
+ * @since 13
+ */
+ void (*replication_source)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* source);
+ /**
+ * if DDC/CI should be used to control brightness etc.
+ *
+ * If the ddc_ci capability is present, this determines if
+ * settings such as brightness, contrast or others should be set
+ * using DDC/CI.
+ * @param allowed 1 if allowed, 0 if disabled
+ * @since 14
+ */
+ void (*ddc_ci_allowed)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t allowed);
+ /**
+ * override max bpc
+ *
+ * This limits the amount of bits per color that are sent to the
+ * display.
+ * @param max_bpc 0 for the default / automatic
+ * @since 15
+ */
+ void (*max_bits_per_color)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t max_bpc);
+ /**
+ * range of max bits per color value
+ *
+ *
+ * @param min_value the minimum supported by the driver
+ * @param max_value the maximum supported by the driver
+ * @since 15
+ */
+ void (*max_bits_per_color_range)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t min_value,
+ uint32_t max_value);
+ /**
+ * if and to what value automatic max bpc is limited
+ *
+ *
+ * @param max_bpc_limit which value automatic bpc gets limited to. 0 if not limited
+ * @since 15
+ */
+ void (*automatic_max_bits_per_color_limit)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t max_bpc_limit);
+ /**
+ * when the compositor may apply EDR
+ *
+ * When EDR is enabled, the compositor may increase the backlight
+ * beyond the user-specified setting, in order to present HDR
+ * content on displays without native HDR support. This will
+ * usually result in better visuals, but also increases battery
+ * usage.
+ * @since 16
+ */
+ void (*edr_policy)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t policy);
+ /**
+ * sharpness strength
+ *
+ * This is the sharpness modifier of the output. 0 is sharpness
+ * disabled and 10000 is the maximum sharpness
+ * @param sharpness sharpness in 0-10000
+ * @since 17
+ */
+ void (*sharpness)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t sharpness);
+ /**
+ * output priority
+ *
+ * Describes the position of the output in the output order list,
+ * with lower values being earlier in the list. There's no specific
+ * value the list has to start at, this value is only used in
+ * sorting outputs.
+ *
+ * Note that the output order protocol is not sufficient for this,
+ * as an output may not be in the output order if it's disabled or
+ * mirroring another screen.
+ * @param priority priority
+ * @since 18
+ */
+ void (*priority)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t priority);
+ /**
+ * whether or not automatic brightness is enabled
+ *
+ *
+ * @param enabled 1 for enabled, 0 for disabled
+ * @since 20
+ */
+ void (*auto_brightness)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t enabled);
+ /**
+ * the output has been removed
+ *
+ * This event is sent when the output device is disconnected and
+ * no new updates will be sent. The client should call the
+ * kde_output_device_v2.release request after receiving this event.
+ * @since 21
+ */
+ void (*removed)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2);
+ /**
+ * describes the path to the ICC profile used in HDR mode
+ *
+ *
+ * @since 22
+ */
+ void (*hdr_icc_profile_path)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ const char* profile_path);
+ /**
+ * describes which source the compositor uses for the color profile on an output in HDR mode
+ *
+ *
+ * @since 22
+ */
+ void (*hdr_color_profile_source)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t source);
+ /**
+ * allowed level of adaptive backlight modulation
+ *
+ * Adaptive backlight modulation is a feature that reduces the
+ * backlight and increases contrast of colors on the screen to
+ * improve power usage.
+ * @param level 0 is off, 4 is the maximum level
+ * @since 23
+ */
+ void (*abm_level)(void* data,
+ struct kde_output_device_v2* kde_output_device_v2,
+ uint32_t level);
+};
+
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+static inline int
+kde_output_device_v2_add_listener(struct kde_output_device_v2* kde_output_device_v2,
+ const struct kde_output_device_v2_listener* listener,
+ void* data) {
+ return wl_proxy_add_listener((struct wl_proxy*) kde_output_device_v2,
+ (void (**)(void)) listener,
+ data);
+}
+
+#define KDE_OUTPUT_DEVICE_V2_RELEASE 0
+
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_GEOMETRY_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_CURRENT_MODE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_MODE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_DONE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_SCALE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_EDID_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_ENABLED_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_UUID_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_SERIAL_NUMBER_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_EISA_ID_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_CAPABILITIES_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_OVERSCAN_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_VRR_POLICY_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_RGB_RANGE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_NAME_SINCE_VERSION 2
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_HIGH_DYNAMIC_RANGE_SINCE_VERSION 3
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_SDR_BRIGHTNESS_SINCE_VERSION 3
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_WIDE_COLOR_GAMUT_SINCE_VERSION 3
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_AUTO_ROTATE_POLICY_SINCE_VERSION 4
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_ICC_PROFILE_PATH_SINCE_VERSION 5
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_BRIGHTNESS_METADATA_SINCE_VERSION 6
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_BRIGHTNESS_OVERRIDES_SINCE_VERSION 6
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_SDR_GAMUT_WIDENESS_SINCE_VERSION 6
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_COLOR_PROFILE_SOURCE_SINCE_VERSION 7
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_BRIGHTNESS_SINCE_VERSION 8
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_COLOR_POWER_TRADEOFF_SINCE_VERSION 10
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_DIMMING_SINCE_VERSION 11
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_REPLICATION_SOURCE_SINCE_VERSION 13
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_DDC_CI_ALLOWED_SINCE_VERSION 14
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_MAX_BITS_PER_COLOR_SINCE_VERSION 15
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_MAX_BITS_PER_COLOR_RANGE_SINCE_VERSION 15
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_AUTOMATIC_MAX_BITS_PER_COLOR_LIMIT_SINCE_VERSION 15
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_EDR_POLICY_SINCE_VERSION 16
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_SHARPNESS_SINCE_VERSION 17
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_PRIORITY_SINCE_VERSION 18
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_AUTO_BRIGHTNESS_SINCE_VERSION 20
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_REMOVED_SINCE_VERSION 21
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_HDR_ICC_PROFILE_PATH_SINCE_VERSION 22
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_HDR_COLOR_PROFILE_SOURCE_SINCE_VERSION 22
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_ABM_LEVEL_SINCE_VERSION 23
+
+/**
+ * @ingroup iface_kde_output_device_v2
+ */
+#define KDE_OUTPUT_DEVICE_V2_RELEASE_SINCE_VERSION 21
+
+/** @ingroup iface_kde_output_device_v2 */
+static inline void
+kde_output_device_v2_set_user_data(struct kde_output_device_v2* kde_output_device_v2, void* user_data) {
+ wl_proxy_set_user_data((struct wl_proxy*) kde_output_device_v2, user_data);
+}
+
+/** @ingroup iface_kde_output_device_v2 */
+static inline void*
+kde_output_device_v2_get_user_data(struct kde_output_device_v2* kde_output_device_v2) {
+ return wl_proxy_get_user_data((struct wl_proxy*) kde_output_device_v2);
+}
+
+static inline uint32_t
+kde_output_device_v2_get_version(struct kde_output_device_v2* kde_output_device_v2) {
+ return wl_proxy_get_version((struct wl_proxy*) kde_output_device_v2);
+}
+
+/** @ingroup iface_kde_output_device_v2 */
+static inline void
+kde_output_device_v2_destroy(struct kde_output_device_v2* kde_output_device_v2) {
+ wl_proxy_destroy((struct wl_proxy*) kde_output_device_v2);
+}
+
+/**
+ * @ingroup iface_kde_output_device_v2
+ *
+ * This notifies the compositor that the client no longer wishes to use
+ * the kde_output_device_v2 object.
+ */
+// static inline void
+// kde_output_device_v2_release(struct kde_output_device_v2* kde_output_device_v2) {
+// wl_proxy_marshal_flags((struct wl_proxy*) kde_output_device_v2,
+// KDE_OUTPUT_DEVICE_V2_RELEASE,
+// NULL,
+// wl_proxy_get_version((struct wl_proxy*) kde_output_device_v2),
+// WL_MARSHAL_FLAG_DESTROY);
+// }
+
+#ifndef KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_ENUM
+ #define KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_ENUM
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ * mode flags
+ */
+enum kde_output_device_mode_v2_flags {
+ KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_CUSTOM = 0x1,
+ KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_REDUCED_BLANKING = 0x2,
+};
+#endif /* KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_ENUM */
+
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ * @struct kde_output_device_mode_v2_listener
+ */
+struct kde_output_device_mode_v2_listener {
+ /**
+ * mode size
+ *
+ * This event describes the mode size. The size is given in
+ * physical hardware units of the output device. This is not
+ * necessarily the same as the output size in the global compositor
+ * space. For instance, the output may be scaled or transformed.
+ * @param width width of the mode in hardware units
+ * @param height height of the mode in hardware units
+ */
+ void (*size)(void* data,
+ struct kde_output_device_mode_v2* kde_output_device_mode_v2,
+ int32_t width,
+ int32_t height);
+ /**
+ * mode refresh rate
+ *
+ * This event describes the mode's fixed vertical refresh rate.
+ * It is only sent if the mode has a fixed refresh rate.
+ * @param refresh vertical refresh rate in mHz
+ */
+ void (*refresh)(void* data,
+ struct kde_output_device_mode_v2* kde_output_device_mode_v2,
+ int32_t refresh);
+ /**
+ * mode is preferred
+ *
+ * This event advertises this mode as preferred.
+ */
+ void (*preferred)(void* data,
+ struct kde_output_device_mode_v2* kde_output_device_mode_v2);
+ /**
+ * the mode has been destroyed
+ *
+ * The compositor will destroy the object immediately after
+ * sending this event, so it will become invalid and the client
+ * should release any resources associated with it.
+ */
+ void (*removed)(void* data,
+ struct kde_output_device_mode_v2* kde_output_device_mode_v2);
+ /**
+ * mode flags
+ *
+ * This event describes the mode's flags.
+ * @since 19
+ */
+ void (*flags)(void* data,
+ struct kde_output_device_mode_v2* kde_output_device_mode_v2,
+ uint32_t flags);
+};
+
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+static inline int
+kde_output_device_mode_v2_add_listener(struct kde_output_device_mode_v2* kde_output_device_mode_v2,
+ const struct kde_output_device_mode_v2_listener* listener,
+ void* data) {
+ return wl_proxy_add_listener((struct wl_proxy*) kde_output_device_mode_v2,
+ (void (**)(void)) listener,
+ data);
+}
+
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+#define KDE_OUTPUT_DEVICE_MODE_V2_SIZE_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+#define KDE_OUTPUT_DEVICE_MODE_V2_REFRESH_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+#define KDE_OUTPUT_DEVICE_MODE_V2_PREFERRED_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+#define KDE_OUTPUT_DEVICE_MODE_V2_REMOVED_SINCE_VERSION 1
+/**
+ * @ingroup iface_kde_output_device_mode_v2
+ */
+#define KDE_OUTPUT_DEVICE_MODE_V2_FLAGS_SINCE_VERSION 19
+
+/** @ingroup iface_kde_output_device_mode_v2 */
+static inline void
+kde_output_device_mode_v2_set_user_data(struct kde_output_device_mode_v2* kde_output_device_mode_v2, void* user_data) {
+ wl_proxy_set_user_data((struct wl_proxy*) kde_output_device_mode_v2, user_data);
+}
+
+/** @ingroup iface_kde_output_device_mode_v2 */
+static inline void*
+kde_output_device_mode_v2_get_user_data(struct kde_output_device_mode_v2* kde_output_device_mode_v2) {
+ return wl_proxy_get_user_data((struct wl_proxy*) kde_output_device_mode_v2);
+}
+
+static inline uint32_t
+kde_output_device_mode_v2_get_version(struct kde_output_device_mode_v2* kde_output_device_mode_v2) {
+ return wl_proxy_get_version((struct wl_proxy*) kde_output_device_mode_v2);
+}
+
+/** @ingroup iface_kde_output_device_mode_v2 */
+static inline void
+kde_output_device_mode_v2_destroy(struct kde_output_device_mode_v2* kde_output_device_mode_v2) {
+ wl_proxy_destroy((struct wl_proxy*) kde_output_device_mode_v2);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif