From ed3aae9d8f79afb546cc9edeb8b051237c3e4752 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 7 Nov 2018 14:26:11 +0100 Subject: [PATCH] drm: Implement ply_renderer_get_panel_properties Implement the get_panel_properties plugin interface. Signed-off-by: Hans de Goede --- src/plugins/renderers/drm/plugin.c | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index 1ff2b295..34b52d7b 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -138,6 +138,11 @@ struct _ply_renderer_backend uint32_t is_active : 1; uint32_t requires_explicit_flushing : 1; uint32_t use_preferred_mode : 1; + + int panel_width; + int panel_height; + ply_pixel_buffer_rotation_t panel_rotation; + int panel_scale; }; ply_renderer_plugin_interface_t *ply_renderer_backend_get_interface (void); @@ -542,6 +547,15 @@ ply_renderer_head_new (ply_renderer_backend_t *backend, ply_pixel_buffer_fill_with_color (head->pixel_buffer, NULL, 0.0, 0.0, 0.0, 1.0); + if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || + connector->connector_type == DRM_MODE_CONNECTOR_eDP || + connector->connector_type == DRM_MODE_CONNECTOR_DSI) { + backend->panel_width = mode->hdisplay; + backend->panel_height = mode->vdisplay; + backend->panel_rotation = rotation; + backend->panel_scale = ply_pixel_buffer_get_device_scale (head->pixel_buffer); + } + return head; } @@ -1488,6 +1502,23 @@ close_input_source (ply_renderer_backend_t *backend, input_source->backend = NULL; } +static bool +get_panel_properties (ply_renderer_backend_t *backend, + int *width, + int *height, + ply_pixel_buffer_rotation_t *rotation, + int *scale) +{ + if (!backend->panel_width) + return false; + + *width = backend->panel_width; + *height = backend->panel_height; + *rotation = backend->panel_rotation; + *scale = backend->panel_scale; + return true; +} + ply_renderer_plugin_interface_t * ply_renderer_backend_get_interface (void) { @@ -1509,7 +1540,8 @@ ply_renderer_backend_get_interface (void) .open_input_source = open_input_source, .set_handler_for_input_source = set_handler_for_input_source, .close_input_source = close_input_source, - .get_device_name = get_device_name + .get_device_name = get_device_name, + .get_panel_properties = get_panel_properties, }; return &plugin_interface; -- 2.47.3