diff options
| author | Eli Zaretskii | 2016-10-08 22:31:14 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2016-10-08 22:31:14 +0300 |
| commit | 44e402ead35eb9b4d0bf8a94a4d3ca933629aba9 (patch) | |
| tree | 4fea0c439333c80c05e03585c5b3b7a7f9ea6b35 | |
| parent | 4ff4b66df8da175d8df292d12a30ab50285b6917 (diff) | |
| download | emacs-44e402ead35eb9b4d0bf8a94a4d3ca933629aba9.tar.gz emacs-44e402ead35eb9b4d0bf8a94a4d3ca933629aba9.zip | |
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 | |||
| 38 | variable to nil to disable the new behavior and get back the old | 38 | variable to nil to disable the new behavior and get back the old |
| 39 | behavior. | 39 | behavior. |
| 40 | 40 | ||
| 41 | --- | ||
| 42 | ** New variable 'inhibit-compacting-font-caches'. | ||
| 43 | Set this variable to a non-nil value to speed up display of characters | ||
| 44 | using large fonts, at the price of a larger memory footprint of the | ||
| 45 | Emacs session. | ||
| 46 | |||
| 41 | 47 | ||
| 42 | * Installation Changes in Emacs 25.1 | 48 | * Installation Changes in Emacs 25.1 |
| 43 | 49 | ||
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) | |||
| 5584 | for (t = terminal_list; t; t = t->next_terminal) | 5584 | for (t = terminal_list; t; t = t->next_terminal) |
| 5585 | { | 5585 | { |
| 5586 | Lisp_Object cache = TERMINAL_FONT_CACHE (t); | 5586 | Lisp_Object cache = TERMINAL_FONT_CACHE (t); |
| 5587 | if (CONSP (cache)) | 5587 | /* Inhibit compacting the caches if the user so wishes. Some of |
| 5588 | the users don't mind a larger memory footprint, but do mind | ||
| 5589 | slower redisplay. */ | ||
| 5590 | if (!inhibit_compacting_font_caches | ||
| 5591 | && CONSP (cache)) | ||
| 5588 | { | 5592 | { |
| 5589 | Lisp_Object entry; | 5593 | Lisp_Object entry; |
| 5590 | 5594 | ||
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 | |||
| 5430 | EMACS_FONT_LOG is set at startup, it defaults to nil. */); | 5430 | EMACS_FONT_LOG is set at startup, it defaults to nil. */); |
| 5431 | Vfont_log = Qnil; | 5431 | Vfont_log = Qnil; |
| 5432 | 5432 | ||
| 5433 | DEFVAR_BOOL ("inhibit-compacting-font-caches", inhibit_compacting_font_caches, | ||
| 5434 | doc: /* | ||
| 5435 | If non-nil, don't compact font caches during GC. | ||
| 5436 | Some large fonts cause lots of consing and trigger GC. If they | ||
| 5437 | are removed from the font caches, they will need to be opened | ||
| 5438 | again during redisplay, which slows down redisplay. If you | ||
| 5439 | see font-related delays in displaying some special characters, | ||
| 5440 | and cannot switch to a smaller font for those characters, set | ||
| 5441 | this variable non-nil. | ||
| 5442 | Disabling compaction of font caches might enlarge the Emacs memory | ||
| 5443 | footprint in sessions that use lots of different fonts. */); | ||
| 5444 | inhibit_compacting_font_caches = 0; | ||
| 5445 | |||
| 5433 | #ifdef HAVE_WINDOW_SYSTEM | 5446 | #ifdef HAVE_WINDOW_SYSTEM |
| 5434 | #ifdef HAVE_FREETYPE | 5447 | #ifdef HAVE_FREETYPE |
| 5435 | syms_of_ftfont (); | 5448 | syms_of_ftfont (); |