]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-renderer: Add ply_renderer_get_panel_properties function
authorHans de Goede <hdegoede@redhat.com>
Wed, 7 Nov 2018 11:24:12 +0000 (12:24 +0100)
committerHans de Goede <hdegoede@redhat.com>
Tue, 27 Nov 2018 07:48:56 +0000 (08:48 +0100)
For some themes we want to read the firmware-logo to use as background,
when the LCD panel of a laptop is mounted non-upright and/or if it is
using scaling because of HiDPI then the image which we get from the
firmware will be pre-rotated and scaled to match the LCD panel.

This new function will allow renderers to let themes know about this so
that they can adjust for the logo being pre-rotated and scaled.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
src/libply-splash-core/ply-renderer-plugin.h
src/libply-splash-core/ply-renderer.c
src/libply-splash-core/ply-renderer.h

index f1455d30adda4b471946999780f02513ef44bcbb..db18d1959b92c483a15dfc59309ba1d9b59419f8 100644 (file)
@@ -68,6 +68,11 @@ typedef struct
                                    ply_renderer_input_source_t *input_source);
 
         const char * (*get_device_name)(ply_renderer_backend_t *backend);
+        bool (*get_panel_properties)(ply_renderer_backend_t      *backend,
+                                     int                         *width,
+                                     int                         *height,
+                                     ply_pixel_buffer_rotation_t *rotation,
+                                     int                         *scale);
 } ply_renderer_plugin_interface_t;
 
 #endif /* PLY_RENDERER_PLUGIN_H */
index ecf70822f42a9be29e89759616507e3c66979596..5e83627ad10cb3c275386740623761795c9703a4 100644 (file)
@@ -410,4 +410,19 @@ ply_renderer_close_input_source (ply_renderer_t              *renderer,
         renderer->input_source_is_open = false;
 }
 
+bool
+ply_renderer_get_panel_properties (ply_renderer_t              *renderer,
+                                   int                         *width,
+                                   int                         *height,
+                                   ply_pixel_buffer_rotation_t *rotation,
+                                   int                         *scale)
+{
+        if (!renderer->plugin_interface->get_panel_properties)
+                return false;
+
+        return renderer->plugin_interface->get_panel_properties (renderer->backend,
+                                                                 width, height,
+                                                                 rotation, scale);
+}
+
 /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
index 59391e170ef462b4b93d85fa9100ff408dc35fa8..c0e0ed59b4b55f42358e97e6199ae1c595e156ec 100644 (file)
@@ -76,6 +76,12 @@ void ply_renderer_set_handler_for_input_source (ply_renderer_t
 
 void ply_renderer_close_input_source (ply_renderer_t              *renderer,
                                       ply_renderer_input_source_t *input_source);
+
+bool ply_renderer_get_panel_properties (ply_renderer_t              *renderer,
+                                        int                         *width,
+                                        int                         *height,
+                                        ply_pixel_buffer_rotation_t *rotation,
+                                        int                         *scale);
 #endif
 
 #endif /* PLY_RENDERER_H */