aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2023-05-30 13:04:58 +0200
committerAlexander Orzechowski <alex@ozal.ski>2023-05-31 22:37:12 +0000
commit30aca4df0de6797df4d1f41550958935f986a4c9 (patch)
treee1c17b8ab731183a45b56526e29f57d8199753f9
parentba276e5ac21ecfa5bf1e3b9c7ae140c4880e2a3a (diff)
backend/drm: introduce wlr_drm_mode_get_info()
This allows compositors to get back the raw drmModeModeInfo and look at DRM-specific fields and flags.
-rw-r--r--backend/drm/drm.c5
-rw-r--r--include/wlr/backend/drm.h7
2 files changed, 12 insertions, 0 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index d2a4f074..cc887a14 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -907,6 +907,11 @@ struct wlr_output_mode *wlr_drm_connector_add_mode(struct wlr_output *output,
return &mode->wlr_mode;
}
+const drmModeModeInfo *wlr_drm_mode_get_info(struct wlr_output_mode *wlr_mode) {
+ const struct wlr_drm_mode *mode = wl_container_of(wlr_mode, mode, wlr_mode);
+ return &mode->drm_mode;
+}
+
static bool drm_connector_set_cursor(struct wlr_output *output,
struct wlr_buffer *buffer, int hotspot_x, int hotspot_y) {
struct wlr_drm_connector *conn = get_drm_connector_from_output(output);
diff --git a/include/wlr/backend/drm.h b/include/wlr/backend/drm.h
index 414d90c0..e4fdf65d 100644
--- a/include/wlr/backend/drm.h
+++ b/include/wlr/backend/drm.h
@@ -79,6 +79,13 @@ struct wlr_output_mode *wlr_drm_connector_add_mode(struct wlr_output *output,
const drmModeModeInfo *mode);
/**
+ * Get the raw DRM mode information from a struct wlr_output_mode.
+ *
+ * The mode passed in must belong to a DRM output.
+ */
+const drmModeModeInfo *wlr_drm_mode_get_info(struct wlr_output_mode *mode);
+
+/**
* Get the connector's panel orientation.
*
* On some devices the panel is mounted in the casing in such a way that the