gdk: Ensure surface buffer scale is set
authorSjoerd Simons <sjoerd@luon.net>
Mon, 7 Nov 2016 21:52:45 +0000 (22:52 +0100)
committerAndreas Henriksson <andreas@fatal.se>
Sun, 2 Jul 2017 05:14:31 +0000 (06:14 +0100)
GDK will only set the buffer scale for the surfaces it creates when
attaching an image or when using an egl window window. Neither will
happen for native clutter applications, thus directly set the buffer
scale from clutter in that case (so it's in sync with the rendering
scale)

Signed-off-by: Sjoerd Simons <sjoerd@luon.net>
https://bugzilla.gnome.org/show_bug.cgi?id=769190

Gbp-Pq: Name gdk-Ensure-surface-buffer-scale-is-set.patch

clutter/gdk/clutter-stage-gdk.c

index 4b90d5cff9fe7cb49bab5d95e5cd4425b0287e05..45176a367167b2c4b57bcbdf8a1273e633ab11c8 100644 (file)
@@ -232,7 +232,14 @@ clutter_stage_gdk_wayland_surface (ClutterStageGdk *stage_gdk)
 
   if (!stage_gdk->foreign_window ||
       gdk_window_get_window_type (stage_gdk->window) != GDK_WINDOW_CHILD)
-    return gdk_wayland_window_get_wl_surface (stage_gdk->window);
+    {
+      struct wl_surface *surface;
+
+      surface = gdk_wayland_window_get_wl_surface (stage_gdk->window);
+      wl_surface_set_buffer_scale (surface,
+                                   gdk_window_get_scale_factor (stage_gdk->window));
+      return surface;
+    }
 
   if (stage_gdk->subsurface)
     goto out;