aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmitry Antipov2014-03-03 11:46:08 +0400
committerDmitry Antipov2014-03-03 11:46:08 +0400
commit8c1c761122b7472617c82fd00c949df52260c903 (patch)
treeea82cb56777b43851a3b410d04dd584748fb77b3 /src
parentfbaddd63ab38480b0da0435eb577137ae0ae8a99 (diff)
downloademacs-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/ChangeLog8
-rw-r--r--src/font.c22
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 @@
12014-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
12014-03-01 Martin Rudalics <rudalics@gmx.at> 92014-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
2520static void font_prepare_cache (struct frame *, struct font_driver *); 2520static void font_prepare_cache (struct frame *, struct font_driver *);
2521static void font_finish_cache (struct frame *, struct font_driver *); 2521static void font_finish_cache (struct frame *, struct font_driver *);
@@ -2585,18 +2585,21 @@ static void
2585font_clear_cache (struct frame *f, Lisp_Object cache, struct font_driver *driver) 2585font_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
4848DEFUN ("frame-font-cache", Fframe_font_cache, Sframe_font_cache, 0, 1, 0,
4849 doc: /* Return FRAME's font cache. Mainly used for debugging.
4850If 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);