]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
label: add support for HiDPI
authorGiovanni Campagna <scampa.giovanni@gmail.com>
Sun, 22 Mar 2015 04:54:32 +0000 (21:54 -0700)
committerRay Strode <rstrode@redhat.com>
Thu, 3 Mar 2016 19:32:25 +0000 (14:32 -0500)
Set the device scale on the cairo surface based on the pixel
buffer device scale. cairo will do the rest of the magic for
us.

https://bugs.freedesktop.org/show_bug.cgi?id=84482

src/plugins/controls/label/plugin.c

index 5edce3b7158adc222c3f6ba50deabd0f6dc273f8..acba52b327c15135bc457b689ae6d3d1f1c382f1 100644 (file)
@@ -113,15 +113,18 @@ get_cairo_context_for_pixel_buffer (ply_label_plugin_control_t *label,
         cairo_t *cairo_context;
         unsigned char *data;
         ply_rectangle_t size;
+        uint32_t scale;
 
         data = (unsigned char *) ply_pixel_buffer_get_argb32_data (pixel_buffer);
         ply_pixel_buffer_get_size (pixel_buffer, &size);
+        scale = ply_pixel_buffer_get_device_scale (pixel_buffer);
 
         cairo_surface = cairo_image_surface_create_for_data (data,
                                                              CAIRO_FORMAT_ARGB32,
-                                                             size.width,
-                                                             size.height,
-                                                             size.width * 4);
+                                                             size.width * scale,
+                                                             size.height * scale,
+                                                             size.width * scale * 4);
+        cairo_surface_set_device_scale (cairo_surface, scale, scale);
         cairo_context = cairo_create (cairo_surface);
         cairo_surface_destroy (cairo_surface);