]> git.eshelyaron.com Git - emacs.git/commitdiff
Work around reporting a dpi change in apply_xft_settings
authorMartin Rudalics <rudalics@gmx.at>
Thu, 22 Dec 2016 07:35:07 +0000 (08:35 +0100)
committerMartin Rudalics <rudalics@gmx.at>
Thu, 22 Dec 2016 07:35:07 +0000 (08:35 +0100)
* src/xsettings.c (apply_xft_settings): Don't report a change
when dpi settings do not differ substantially.

src/xsettings.c

index d7af68f1c5f58d712b7f4f421f318a2b705e5f47..10afd7d15c892fef957089c9a985991605c23e38 100644 (file)
@@ -667,8 +667,23 @@ apply_xft_settings (struct x_display_info *dpyinfo,
     }
 #endif
 
-  if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi
-      && settings->dpi > 0)
+  if ((settings->seen & SEEN_DPI) != 0
+      && settings->dpi > 0
+      /* The following conjunct avoids setting `changed' to true when
+        old and new dpi settings do not differ "substantially".
+        Otherwise, the dynamic-setting Elisp code may process all sorts
+        of unrelated settings that override users' font customizations,
+        among others.  Compare:
+
+        http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00557.html
+        http://lists.gnu.org/archive/html/bug-gnu-emacs/2016-12/msg00820.html
+
+        As soon as the dynamic-settings code has been tested and
+        verified, this Emacs 25.2 workaround should be removed.  */
+      && ((oldsettings.dpi >= settings->dpi
+          && (oldsettings.dpi - settings->dpi) > 2)
+         || ((settings->dpi > oldsettings.dpi)
+             && (settings->dpi - oldsettings.dpi) > 2)))
     {
       FcPatternDel (pat, FC_DPI);
       FcPatternAddDouble (pat, FC_DPI, settings->dpi);