Work around reporting a dpi change in apply_xft_settings

* src/xsettings.c (apply_xft_settings): Don't report a change
when dpi settings do not differ substantially.
This commit is contained in:
Martin Rudalics 2016-12-22 08:35:07 +01:00
parent cf1f9852d0
commit 86a297a43d

View 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);