From: Ari Roponen Date: Fri, 30 Nov 2018 12:09:09 +0000 (+0200) Subject: Fix scaling problem in Cairo builds X-Git-Tag: emacs-26.1.91~57 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1d743d2;p=emacs.git Fix scaling problem in Cairo builds * src/xterm.c (x_begin_cr_clip) [USE_GTK]: (x_update_begin) [USE_CAIRO && USE_GTK]: Support scaling. (Bug#33442) --- diff --git a/src/xterm.c b/src/xterm.c index b2d1b5c1980..8157612b293 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -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