diff options
| author | Dmitry Antipov | 2014-03-03 11:46:08 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2014-03-03 11:46:08 +0400 |
| commit | 8c1c761122b7472617c82fd00c949df52260c903 (patch) | |
| tree | ea82cb56777b43851a3b410d04dd584748fb77b3 /src | |
| parent | fbaddd63ab38480b0da0435eb577137ae0ae8a99 (diff) | |
| download | emacs-8c1c761122b7472617c82fd00c949df52260c903.tar.gz emacs-8c1c761122b7472617c82fd00c949df52260c903.zip | |
* font.c (toplevel): Adjust comment about font cache layout.
(font_clear_cache): Fix to match real font cache layout.
Suggested by <namespace_collision@yahoo.com> in Bug#16069.
(Fframe_font_cache) [FONT_DEBUG]: New function.
(syms_of_font) [FONT_DEBUG]: Defsubr it.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 8 | ||||
| -rw-r--r-- | src/font.c | 22 |
2 files changed, 25 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 94430f17182..280077c3844 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2014-03-03 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 2 | |||
| 3 | * font.c (toplevel): Adjust comment about font cache layout. | ||
| 4 | (font_clear_cache): Fix to match real font cache layout. | ||
| 5 | Suggested by <namespace_collision@yahoo.com> in Bug#16069. | ||
| 6 | (Fframe_font_cache) [FONT_DEBUG]: New function. | ||
| 7 | (syms_of_font) [FONT_DEBUG]: Defsubr it. | ||
| 8 | |||
| 1 | 2014-03-01 Martin Rudalics <rudalics@gmx.at> | 9 | 2014-03-01 Martin Rudalics <rudalics@gmx.at> |
| 2 | 10 | ||
| 3 | Consider Vother_window_scroll_buffer valid iff it's a live buffer. | 11 | Consider Vother_window_scroll_buffer valid iff it's a live buffer. |
diff --git a/src/font.c b/src/font.c index 8027de81609..4c27e1fe867 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -2515,7 +2515,7 @@ font_match_p (Lisp_Object spec, Lisp_Object font) | |||
| 2515 | 2515 | ||
| 2516 | where DRIVER-TYPE is a symbol such as `x', `xft', etc., NUM-FRAMES | 2516 | where DRIVER-TYPE is a symbol such as `x', `xft', etc., NUM-FRAMES |
| 2517 | is a number frames sharing this cache, and FONT-CACHE-DATA is a | 2517 | is a number frames sharing this cache, and FONT-CACHE-DATA is a |
| 2518 | cons (FONT-SPEC FONT-ENTITY ...). */ | 2518 | cons (FONT-SPEC . [FONT-ENTITY ...]). */ |
| 2519 | 2519 | ||
| 2520 | static void font_prepare_cache (struct frame *, struct font_driver *); | 2520 | static void font_prepare_cache (struct frame *, struct font_driver *); |
| 2521 | static void font_finish_cache (struct frame *, struct font_driver *); | 2521 | static void font_finish_cache (struct frame *, struct font_driver *); |
| @@ -2585,18 +2585,21 @@ static void | |||
| 2585 | font_clear_cache (struct frame *f, Lisp_Object cache, struct font_driver *driver) | 2585 | font_clear_cache (struct frame *f, Lisp_Object cache, struct font_driver *driver) |
| 2586 | { | 2586 | { |
| 2587 | Lisp_Object tail, elt; | 2587 | Lisp_Object tail, elt; |
| 2588 | Lisp_Object tail2, entity; | 2588 | Lisp_Object entity; |
| 2589 | ptrdiff_t i; | ||
| 2589 | 2590 | ||
| 2590 | /* CACHE = (DRIVER-TYPE NUM-FRAMES FONT-CACHE-DATA ...) */ | 2591 | /* CACHE = (DRIVER-TYPE NUM-FRAMES FONT-CACHE-DATA ...) */ |
| 2591 | for (tail = XCDR (XCDR (cache)); CONSP (tail); tail = XCDR (tail)) | 2592 | for (tail = XCDR (XCDR (cache)); CONSP (tail); tail = XCDR (tail)) |
| 2592 | { | 2593 | { |
| 2593 | elt = XCAR (tail); | 2594 | elt = XCAR (tail); |
| 2594 | /* elt should have the form (FONT-SPEC FONT-ENTITY ...) */ | 2595 | /* elt should have the form (FONT-SPEC . [FONT-ENTITY ...]) */ |
| 2595 | if (CONSP (elt) && FONT_SPEC_P (XCAR (elt))) | 2596 | if (CONSP (elt) && FONT_SPEC_P (XCAR (elt))) |
| 2596 | { | 2597 | { |
| 2597 | for (tail2 = XCDR (elt); CONSP (tail2); tail2 = XCDR (tail2)) | 2598 | elt = XCDR (elt); |
| 2599 | eassert (VECTORP (elt)); | ||
| 2600 | for (i = 0; i < ASIZE (elt); i++) | ||
| 2598 | { | 2601 | { |
| 2599 | entity = XCAR (tail2); | 2602 | entity = AREF (elt, i); |
| 2600 | 2603 | ||
| 2601 | if (FONT_ENTITY_P (entity) | 2604 | if (FONT_ENTITY_P (entity) |
| 2602 | && EQ (driver->type, AREF (entity, FONT_TYPE_INDEX))) | 2605 | && EQ (driver->type, AREF (entity, FONT_TYPE_INDEX))) |
| @@ -4842,6 +4845,14 @@ Type C-l to recover what previously shown. */) | |||
| 4842 | } | 4845 | } |
| 4843 | #endif | 4846 | #endif |
| 4844 | 4847 | ||
| 4848 | DEFUN ("frame-font-cache", Fframe_font_cache, Sframe_font_cache, 0, 1, 0, | ||
| 4849 | doc: /* Return FRAME's font cache. Mainly used for debugging. | ||
| 4850 | If FRAME is omitted or nil, use the selected frame. */) | ||
| 4851 | (Lisp_Object frame) | ||
| 4852 | { | ||
| 4853 | return FRAME_DISPLAY_INFO (decode_live_frame (frame))->name_list_element; | ||
| 4854 | } | ||
| 4855 | |||
| 4845 | #endif /* FONT_DEBUG */ | 4856 | #endif /* FONT_DEBUG */ |
| 4846 | 4857 | ||
| 4847 | #ifdef HAVE_WINDOW_SYSTEM | 4858 | #ifdef HAVE_WINDOW_SYSTEM |
| @@ -5134,6 +5145,7 @@ syms_of_font (void) | |||
| 5134 | #if 0 | 5145 | #if 0 |
| 5135 | defsubr (&Sdraw_string); | 5146 | defsubr (&Sdraw_string); |
| 5136 | #endif | 5147 | #endif |
| 5148 | defsubr (&Sframe_font_cache); | ||
| 5137 | #endif /* FONT_DEBUG */ | 5149 | #endif /* FONT_DEBUG */ |
| 5138 | #ifdef HAVE_WINDOW_SYSTEM | 5150 | #ifdef HAVE_WINDOW_SYSTEM |
| 5139 | defsubr (&Sfont_info); | 5151 | defsubr (&Sfont_info); |