diff options
author | Eli Zaretskii <eliz@gnu.org> | 2016-10-08 22:31:14 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2016-10-08 22:31:14 +0300 |
commit | 44e402ead35eb9b4d0bf8a94a4d3ca933629aba9 (patch) | |
tree | 4fea0c439333c80c05e03585c5b3b7a7f9ea6b35 | |
parent | 4ff4b66df8da175d8df292d12a30ab50285b6917 (diff) | |
download | emacs-44e402ead35eb9b4d0bf8a94a4d3ca933629aba9.tar.gz |
Allow to disable compaction of font caches
* src/font.c (syms_of_font) <inhibit-compacting-font-caches>: New
boolean variable.
* src/alloc.c (compact_font_caches): Use it to bypass the call to
compact_font_cache_entry. (Bug#24634) (Bug#24565)
* etc/NEWS: Mention the new variable.
-rw-r--r-- | etc/NEWS | 6 | ||||
-rw-r--r-- | src/alloc.c | 6 | ||||
-rw-r--r-- | src/font.c | 13 |
3 files changed, 24 insertions, 1 deletions
@@ -38,6 +38,12 @@ fontsets if the default font supports these characters. Set this variable to nil to disable the new behavior and get back the old behavior. +--- +** New variable 'inhibit-compacting-font-caches'. +Set this variable to a non-nil value to speed up display of characters +using large fonts, at the price of a larger memory footprint of the +Emacs session. + * Installation Changes in Emacs 25.1 diff --git a/src/alloc.c b/src/alloc.c index f33d93f83b4..c7f58a8adc4 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5584,7 +5584,11 @@ compact_font_caches (void) for (t = terminal_list; t; t = t->next_terminal) { Lisp_Object cache = TERMINAL_FONT_CACHE (t); - if (CONSP (cache)) + /* Inhibit compacting the caches if the user so wishes. Some of + the users don't mind a larger memory footprint, but do mind + slower redisplay. */ + if (!inhibit_compacting_font_caches + && CONSP (cache)) { Lisp_Object entry; diff --git a/src/font.c b/src/font.c index 2519599bc63..b85956f225c 100644 --- a/src/font.c +++ b/src/font.c @@ -5430,6 +5430,19 @@ Set it to nil to enable logging. If the environment variable EMACS_FONT_LOG is set at startup, it defaults to nil. */); Vfont_log = Qnil; + DEFVAR_BOOL ("inhibit-compacting-font-caches", inhibit_compacting_font_caches, + doc: /* +If non-nil, don't compact font caches during GC. +Some large fonts cause lots of consing and trigger GC. If they +are removed from the font caches, they will need to be opened +again during redisplay, which slows down redisplay. If you +see font-related delays in displaying some special characters, +and cannot switch to a smaller font for those characters, set +this variable non-nil. +Disabling compaction of font caches might enlarge the Emacs memory +footprint in sessions that use lots of different fonts. */); + inhibit_compacting_font_caches = 0; + #ifdef HAVE_WINDOW_SYSTEM #ifdef HAVE_FREETYPE syms_of_ftfont (); |