]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix scaling problem in Cairo builds
authorAri Roponen <ari.roponen@gmail.com>
Fri, 30 Nov 2018 12:09:09 +0000 (14:09 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 8 Dec 2018 09:50:00 +0000 (11:50 +0200)
* src/xterm.c (x_begin_cr_clip) [USE_GTK]:
(x_update_begin) [USE_CAIRO && USE_GTK]: Support scaling.
(Bug#33442)

src/xterm.c

index b2d1b5c1980724cfce0369b44b0b1ae7066bce05..8157612b2933b8990122a7cd793c8f4471ca4d54 100644 (file)
@@ -360,10 +360,15 @@ x_begin_cr_clip (struct frame *f, GC gc)
 
       if (! FRAME_CR_SURFACE (f))
         {
+         int scale = 1;
+#ifdef USE_GTK
+         scale = xg_get_scale (f);
+#endif
+
          FRAME_CR_SURFACE (f) =
            cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
-                                       FRAME_PIXEL_WIDTH (f),
-                                       FRAME_PIXEL_HEIGHT (f));
+                                       scale * FRAME_PIXEL_WIDTH (f),
+                                       scale * FRAME_PIXEL_HEIGHT (f));
        }
       cr = cairo_create (FRAME_CR_SURFACE (f));
       FRAME_CR_CONTEXT (f) = cr;
@@ -1006,8 +1011,9 @@ x_update_begin (struct frame *f)
       if (FRAME_GTK_WIDGET (f))
         {
           GdkWindow *w = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
-          width = gdk_window_get_width (w);
-          height = gdk_window_get_height (w);
+         int scale = xg_get_scale (f);
+         width = scale * gdk_window_get_width (w);
+          height = scale * gdk_window_get_height (w);
         }
       else
 #endif