aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog47
-rw-r--r--src/font.c46
-rw-r--r--src/frame.c35
-rw-r--r--src/frame.h2
-rw-r--r--src/keyboard.c7
-rw-r--r--src/lisp.h4
-rw-r--r--src/lisp.mk5
-rw-r--r--src/nsfont.m14
-rw-r--r--src/unexelf.c10
-rw-r--r--src/w32fns.c3
-rw-r--r--src/xdisp.c5
-rw-r--r--src/xfaces.c36
-rw-r--r--src/xterm.c3
13 files changed, 142 insertions, 75 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1a309066703..e59a286110d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,50 @@
12012-10-23 Kenichi Handa <handa@gnu.org>
2
3 The following change is to make face-font-rescale-alist work
4 correctly for non-ASCII fonts.
5
6 * font.c (font_open_entity): Don't handle Vface_font_rescale_alist.
7 (font_open_for_lface): Handle Vface_font_rescale_alist.
8
92012-10-23 Chong Yidong <cyd@gnu.org>
10
11 * xfaces.c (Vfont_list_limit): Move unused variable to faces.el.
12
132012-10-21 Jan Djärv <jan.h.d@swipnet.se>
14
15 * nsfont.m (nsfont_open, ns_glyph_metrics): Force integer advancement
16 for screen font.
17 (nsfont_draw): Turn off LCD-smoothing (Bug#11484).
18
19 * xterm.c (x_focus_changed): Check if daemonp when sending focus in
20 event (Bug#12681).
21
222012-10-21 Glenn Morris <rgm@gnu.org>
23
24 * lisp.mk (lisp): Add cp51932.el and eucjp-ms.el.
25
262012-10-20 Paul Eggert <eggert@cs.ucla.edu>
27
28 Port to OpenBSD 5.1.
29 * frame.c (Fmouse_position, Fmouse_pixel_position):
30 * xdisp.c (produce_stretch_glyph):
31 Declare local vars only when they're needed.
32 This is clearer and avoids a warning on OpenBSD about unused vars.
33 * frame.h (FRAME_WINDOW_P): Always evaluate its argument.
34 This is safer, and avoids OpenBSD warnings about unused vars.
35 * keyboard.c (record_menu_key): Remove unnecessary decl.
36 (poll_timer): Define only if POLL_FOR_INPUT is defined.
37 * unexelf.c (ELFSIZE) [!ElfW]: Do not define if already defined,
38 as our definition clashes with OpenBSD's.
39 * xfaces.c (load_face_colors, check_lface_attrs)
40 (get_lface_attributes_no_remap, get_lface_attributes)
41 (lface_fully_specified_p, x_supports_face_attributes_p)
42 (tty_supports_face_attributes_p, face_fontset, realize_face)
43 (realize_x_face, realize_tty_face):
44 Declare parameters to be Lisp_Object[LFACE_VECTOR_SIZE], not
45 merely Lisp_Object *. This is more informative and avoids
46 a warning on OpenBSD about accessing beyond an object's size.
47
12012-10-20 Chong Yidong <cyd@gnu.org> 482012-10-20 Chong Yidong <cyd@gnu.org>
2 49
3 * lread.c (Fload): Doc fix (Bug#12592). 50 * lread.c (Fload): Doc fix (Bug#12592).
diff --git a/src/font.c b/src/font.c
index 7cb4149ac4e..bff2356d6ca 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2816,14 +2816,11 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size)
2816 Lisp_Object objlist, size, val, font_object; 2816 Lisp_Object objlist, size, val, font_object;
2817 struct font *font; 2817 struct font *font;
2818 int min_width, height; 2818 int min_width, height;
2819 int scaled_pixel_size = pixel_size;
2820 2819
2821 eassert (FONT_ENTITY_P (entity)); 2820 eassert (FONT_ENTITY_P (entity));
2822 size = AREF (entity, FONT_SIZE_INDEX); 2821 size = AREF (entity, FONT_SIZE_INDEX);
2823 if (XINT (size) != 0) 2822 if (XINT (size) != 0)
2824 scaled_pixel_size = pixel_size = XINT (size); 2823 pixel_size = XINT (size);
2825 else if (CONSP (Vface_font_rescale_alist))
2826 scaled_pixel_size = pixel_size * font_rescale_ratio (entity);
2827 2824
2828 val = AREF (entity, FONT_TYPE_INDEX); 2825 val = AREF (entity, FONT_TYPE_INDEX);
2829 for (driver_list = f->font_driver_list; 2826 for (driver_list = f->font_driver_list;
@@ -2845,7 +2842,7 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size)
2845 } 2842 }
2846 } 2843 }
2847 2844
2848 font_object = driver_list->driver->open (f, entity, scaled_pixel_size); 2845 font_object = driver_list->driver->open (f, entity, pixel_size);
2849 if (!NILP (font_object)) 2846 if (!NILP (font_object))
2850 ASET (font_object, FONT_SIZE_INDEX, make_number (pixel_size)); 2847 ASET (font_object, FONT_SIZE_INDEX, make_number (pixel_size));
2851 FONT_ADD_LOG ("open", entity, font_object); 2848 FONT_ADD_LOG ("open", entity, font_object);
@@ -3230,31 +3227,36 @@ font_open_for_lface (FRAME_PTR f, Lisp_Object entity, Lisp_Object *attrs, Lisp_O
3230 if (INTEGERP (AREF (entity, FONT_SIZE_INDEX)) 3227 if (INTEGERP (AREF (entity, FONT_SIZE_INDEX))
3231 && XINT (AREF (entity, FONT_SIZE_INDEX)) > 0) 3228 && XINT (AREF (entity, FONT_SIZE_INDEX)) > 0)
3232 size = XINT (AREF (entity, FONT_SIZE_INDEX)); 3229 size = XINT (AREF (entity, FONT_SIZE_INDEX));
3233 else if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX)))
3234 size = font_pixel_size (f, spec);
3235 else 3230 else
3236 { 3231 {
3237 double pt; 3232 if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX)))
3238 if (INTEGERP (attrs[LFACE_HEIGHT_INDEX])) 3233 size = font_pixel_size (f, spec);
3239 pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
3240 else 3234 else
3241 { 3235 {
3242 struct face *def = FACE_FROM_ID (f, DEFAULT_FACE_ID); 3236 double pt;
3243 Lisp_Object height = def->lface[LFACE_HEIGHT_INDEX]; 3237 if (INTEGERP (attrs[LFACE_HEIGHT_INDEX]))
3244 eassert (INTEGERP (height)); 3238 pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
3245 pt = XINT (height); 3239 else
3246 } 3240 {
3241 struct face *def = FACE_FROM_ID (f, DEFAULT_FACE_ID);
3242 Lisp_Object height = def->lface[LFACE_HEIGHT_INDEX];
3243 eassert (INTEGERP (height));
3244 pt = XINT (height);
3245 }
3247 3246
3248 pt /= 10; 3247 pt /= 10;
3249 size = POINT_TO_PIXEL (pt, f->resy); 3248 size = POINT_TO_PIXEL (pt, f->resy);
3250#ifdef HAVE_NS 3249#ifdef HAVE_NS
3251 if (size == 0) 3250 if (size == 0)
3252 { 3251 {
3253 Lisp_Object ffsize = get_frame_param (f, Qfontsize); 3252 Lisp_Object ffsize = get_frame_param (f, Qfontsize);
3254 size = NUMBERP (ffsize) ? POINT_TO_PIXEL (XINT (ffsize), f->resy) : 0; 3253 size = NUMBERP (ffsize) ? POINT_TO_PIXEL (XINT (ffsize), f->resy) : 0;
3255 } 3254 }
3256#endif 3255#endif
3256 }
3257 size *= font_rescale_ratio (entity);
3257 } 3258 }
3259
3258 return font_open_entity (f, entity, size); 3260 return font_open_entity (f, entity, size);
3259} 3261}
3260 3262
diff --git a/src/frame.c b/src/frame.c
index 017d051fc1d..6478ad1e06f 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1501,10 +1501,7 @@ and returns whatever that function returns. */)
1501{ 1501{
1502 FRAME_PTR f; 1502 FRAME_PTR f;
1503 Lisp_Object lispy_dummy; 1503 Lisp_Object lispy_dummy;
1504 enum scroll_bar_part party_dummy;
1505 Lisp_Object x, y, retval; 1504 Lisp_Object x, y, retval;
1506 int col, row;
1507 Time long_dummy;
1508 struct gcpro gcpro1; 1505 struct gcpro gcpro1;
1509 1506
1510 f = SELECTED_FRAME (); 1507 f = SELECTED_FRAME ();
@@ -1513,14 +1510,19 @@ and returns whatever that function returns. */)
1513#if defined (HAVE_MOUSE) || defined (HAVE_GPM) 1510#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
1514 /* It's okay for the hook to refrain from storing anything. */ 1511 /* It's okay for the hook to refrain from storing anything. */
1515 if (FRAME_TERMINAL (f)->mouse_position_hook) 1512 if (FRAME_TERMINAL (f)->mouse_position_hook)
1516 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1, 1513 {
1517 &lispy_dummy, &party_dummy, 1514 enum scroll_bar_part party_dummy;
1518 &x, &y, 1515 Time time_dummy;
1519 &long_dummy); 1516 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
1517 &lispy_dummy, &party_dummy,
1518 &x, &y,
1519 &time_dummy);
1520 }
1521
1520 if (! NILP (x)) 1522 if (! NILP (x))
1521 { 1523 {
1522 col = XINT (x); 1524 int col = XINT (x);
1523 row = XINT (y); 1525 int row = XINT (y);
1524 pixel_to_glyph_coords (f, col, row, &col, &row, NULL, 1); 1526 pixel_to_glyph_coords (f, col, row, &col, &row, NULL, 1);
1525 XSETINT (x, col); 1527 XSETINT (x, col);
1526 XSETINT (y, row); 1528 XSETINT (y, row);
@@ -1547,9 +1549,7 @@ and nil for X and Y. */)
1547{ 1549{
1548 FRAME_PTR f; 1550 FRAME_PTR f;
1549 Lisp_Object lispy_dummy; 1551 Lisp_Object lispy_dummy;
1550 enum scroll_bar_part party_dummy;
1551 Lisp_Object x, y; 1552 Lisp_Object x, y;
1552 Time long_dummy;
1553 1553
1554 f = SELECTED_FRAME (); 1554 f = SELECTED_FRAME ();
1555 x = y = Qnil; 1555 x = y = Qnil;
@@ -1557,10 +1557,15 @@ and nil for X and Y. */)
1557#if defined (HAVE_MOUSE) || defined (HAVE_GPM) 1557#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
1558 /* It's okay for the hook to refrain from storing anything. */ 1558 /* It's okay for the hook to refrain from storing anything. */
1559 if (FRAME_TERMINAL (f)->mouse_position_hook) 1559 if (FRAME_TERMINAL (f)->mouse_position_hook)
1560 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1, 1560 {
1561 &lispy_dummy, &party_dummy, 1561 enum scroll_bar_part party_dummy;
1562 &x, &y, 1562 Time time_dummy;
1563 &long_dummy); 1563 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
1564 &lispy_dummy, &party_dummy,
1565 &x, &y,
1566 &time_dummy);
1567 }
1568
1564#endif 1569#endif
1565 XSETFRAME (lispy_dummy, f); 1570 XSETFRAME (lispy_dummy, f);
1566 return Fcons (lispy_dummy, Fcons (x, y)); 1571 return Fcons (lispy_dummy, Fcons (x, y));
diff --git a/src/frame.h b/src/frame.h
index 7bf76c21c56..f8c3d99fedd 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -646,7 +646,7 @@ typedef struct frame *FRAME_PTR;
646#define FRAME_WINDOW_P(f) FRAME_NS_P(f) 646#define FRAME_WINDOW_P(f) FRAME_NS_P(f)
647#endif 647#endif
648#ifndef FRAME_WINDOW_P 648#ifndef FRAME_WINDOW_P
649#define FRAME_WINDOW_P(f) (0) 649#define FRAME_WINDOW_P(f) ((void) (f), 0)
650#endif 650#endif
651 651
652/* Return a pointer to the structure holding information about the 652/* Return a pointer to the structure holding information about the
diff --git a/src/keyboard.c b/src/keyboard.c
index 010bd6c72ef..2f751d0ec72 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -368,7 +368,6 @@ static Lisp_Object command_loop (void);
368static Lisp_Object Qextended_command_history; 368static Lisp_Object Qextended_command_history;
369EMACS_TIME timer_check (void); 369EMACS_TIME timer_check (void);
370 370
371static void record_menu_key (Lisp_Object c);
372static void echo_now (void); 371static void echo_now (void);
373static ptrdiff_t echo_length (void); 372static ptrdiff_t echo_length (void);
374 373
@@ -1966,12 +1965,12 @@ safe_run_hooks (Lisp_Object hook)
1966 1965
1967int poll_suppress_count; 1966int poll_suppress_count;
1968 1967
1969/* Asynchronous timer for polling. */
1970 1968
1971static struct atimer *poll_timer; 1969#ifdef POLL_FOR_INPUT
1972 1970
1971/* Asynchronous timer for polling. */
1973 1972
1974#ifdef POLL_FOR_INPUT 1973static struct atimer *poll_timer;
1975 1974
1976/* Poll for input, so that we catch a C-g if it comes in. This 1975/* Poll for input, so that we catch a C-g if it comes in. This
1977 function is called from x_make_frame_visible, see comment 1976 function is called from x_make_frame_visible, see comment
diff --git a/src/lisp.h b/src/lisp.h
index e0611e19ff1..17a9e5c1f6a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -308,7 +308,7 @@ enum Lisp_Fwd_Type
308 First, there are already a couple of Lisp types that can be used if 308 First, there are already a couple of Lisp types that can be used if
309 your new type does not need to be exposed to Lisp programs nor 309 your new type does not need to be exposed to Lisp programs nor
310 displayed to users. These are Lisp_Save_Value, a Lisp_Misc 310 displayed to users. These are Lisp_Save_Value, a Lisp_Misc
311 subtype, and PVEC_OTHER, a kind of vectorlike object. The former 311 subtype; and PVEC_OTHER, a kind of vectorlike object. The former
312 is suitable for temporarily stashing away pointers and integers in 312 is suitable for temporarily stashing away pointers and integers in
313 a Lisp object (see the existing uses of make_save_value and 313 a Lisp object (see the existing uses of make_save_value and
314 XSAVE_VALUE). The latter is useful for vector-like Lisp objects 314 XSAVE_VALUE). The latter is useful for vector-like Lisp objects
@@ -322,7 +322,7 @@ enum Lisp_Fwd_Type
322 To define a new data type, add one more Lisp_Misc subtype or one 322 To define a new data type, add one more Lisp_Misc subtype or one
323 more pseudovector subtype. Pseudovectors are more suitable for 323 more pseudovector subtype. Pseudovectors are more suitable for
324 objects with several slots that need to support fast random access, 324 objects with several slots that need to support fast random access,
325 whil Lisp_Misc types are foreverything else. A pseudovector object 325 while Lisp_Misc types are for everything else. A pseudovector object
326 provides one or more slots for Lisp objects, followed by struct 326 provides one or more slots for Lisp objects, followed by struct
327 members that are accessible only from C. A Lisp_Misc object is a 327 members that are accessible only from C. A Lisp_Misc object is a
328 wrapper for a C struct that can contain anything you like. 328 wrapper for a C struct that can contain anything you like.
diff --git a/src/lisp.mk b/src/lisp.mk
index 3d60e07dea3..1f459d4d5f1 100644
--- a/src/lisp.mk
+++ b/src/lisp.mk
@@ -35,7 +35,8 @@
35## no-byte-compile ones. 35## no-byte-compile ones.
36 36
37## Confusingly, term/internal is not in loadup, but is unconditionally 37## Confusingly, term/internal is not in loadup, but is unconditionally
38## loaded by pc-win, which is. 38## loaded by pc-win, which is. Ditto for international/cp51932 and
39## international/eucjp-ms, loaded from language/japanese.
39 40
40## Note that this list should not include lisp files which might not 41## Note that this list should not include lisp files which might not
41## be present, like site-load.el and site-init.el; this makefile 42## be present, like site-load.el and site-init.el; this makefile
@@ -94,6 +95,8 @@ lisp = \
94 $(lispsource)/language/greek.elc \ 95 $(lispsource)/language/greek.elc \
95 $(lispsource)/language/hebrew.elc \ 96 $(lispsource)/language/hebrew.elc \
96 $(lispsource)/language/japanese.elc \ 97 $(lispsource)/language/japanese.elc \
98 $(lispsource)/international/cp51932.el \
99 $(lispsource)/international/eucjp-ms.el \
97 $(lispsource)/language/korean.elc \ 100 $(lispsource)/language/korean.elc \
98 $(lispsource)/language/lao.elc \ 101 $(lispsource)/language/lao.elc \
99 $(lispsource)/language/tai-viet.elc \ 102 $(lispsource)/language/tai-viet.elc \
diff --git a/src/nsfont.m b/src/nsfont.m
index 7c9f05aa0bb..4f29d1d54a9 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -797,7 +797,13 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size)
797 block_input (); 797 block_input ();
798 798
799 /* for metrics */ 799 /* for metrics */
800#ifdef NS_IMPL_COCOA
801 sfont = [nsfont screenFontWithRenderingMode:
802 NSFontAntialiasedIntegerAdvancementsRenderingMode];
803#else
800 sfont = [nsfont screenFont]; 804 sfont = [nsfont screenFont];
805#endif
806
801 if (sfont == nil) 807 if (sfont == nil)
802 sfont = nsfont; 808 sfont = nsfont;
803 809
@@ -1229,6 +1235,7 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y,
1229 else 1235 else
1230 CGContextSetShouldAntialias (gcontext, 1); 1236 CGContextSetShouldAntialias (gcontext, 1);
1231 1237
1238 CGContextSetShouldSmoothFonts (gcontext, NO);
1232 CGContextSetTextMatrix (gcontext, fliptf); 1239 CGContextSetTextMatrix (gcontext, fliptf);
1233 1240
1234 if (bgCol != nil) 1241 if (bgCol != nil)
@@ -1372,7 +1379,12 @@ ns_glyph_metrics (struct nsfont_info *font_info, unsigned char block)
1372#endif 1379#endif
1373 1380
1374 block_input (); 1381 block_input ();
1375 sfont = [font_info->nsfont screenFont]; 1382#ifdef NS_IMPL_COCOA
1383 sfont = [font_info->nsfont screenFontWithRenderingMode:
1384 NSFontAntialiasedIntegerAdvancementsRenderingMode];
1385#else
1386 sfont = [font_info->nsfont screenFont];
1387#endif
1376 1388
1377 font_info->metrics[block] = xzalloc (0x100 * sizeof (struct font_metrics)); 1389 font_info->metrics[block] = xzalloc (0x100 * sizeof (struct font_metrics));
1378 if (!(font_info->metrics[block])) 1390 if (!(font_info->metrics[block]))
diff --git a/src/unexelf.c b/src/unexelf.c
index f35b53aeab3..121e6042fc9 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -507,10 +507,12 @@ typedef struct {
507 507
508#ifndef ElfW 508#ifndef ElfW
509# define ElfBitsW(bits, type) Elf##bits##_##type 509# define ElfBitsW(bits, type) Elf##bits##_##type
510# ifdef _LP64 510# ifndef ELFSIZE
511# define ELFSIZE 64 511# ifdef _LP64
512# else 512# define ELFSIZE 64
513# define ELFSIZE 32 513# else
514# define ELFSIZE 32
515# endif
514# endif 516# endif
515 /* This macro expands `bits' before invoking ElfBitsW. */ 517 /* This macro expands `bits' before invoking ElfBitsW. */
516# define ElfExpandBitsW(bits, type) ElfBitsW (bits, type) 518# define ElfExpandBitsW(bits, type) ElfBitsW (bits, type)
diff --git a/src/w32fns.c b/src/w32fns.c
index 8dd3eb83c60..28e8ea02e05 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -211,7 +211,7 @@ static void w32_show_hourglass (struct frame *);
211static void w32_hide_hourglass (void); 211static void w32_hide_hourglass (void);
212 212
213#ifdef WINDOWSNT 213#ifdef WINDOWSNT
214/* From w32inevet.c */ 214/* From w32inevt.c */
215extern int faked_key; 215extern int faked_key;
216#endif /* WINDOWSNT */ 216#endif /* WINDOWSNT */
217 217
@@ -7711,4 +7711,3 @@ emacs_abort (void)
7711 break; 7711 break;
7712 } 7712 }
7713} 7713}
7714
diff --git a/src/xdisp.c b/src/xdisp.c
index f597e40bbd5..109aca9051c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -24318,17 +24318,16 @@ produce_stretch_glyph (struct it *it)
24318 Lisp_Object prop, plist; 24318 Lisp_Object prop, plist;
24319 int width = 0, height = 0, align_to = -1; 24319 int width = 0, height = 0, align_to = -1;
24320 int zero_width_ok_p = 0; 24320 int zero_width_ok_p = 0;
24321 int ascent = 0;
24322 double tem; 24321 double tem;
24323 struct face *face = NULL;
24324 struct font *font = NULL; 24322 struct font *font = NULL;
24325 24323
24326#ifdef HAVE_WINDOW_SYSTEM 24324#ifdef HAVE_WINDOW_SYSTEM
24325 int ascent = 0;
24327 int zero_height_ok_p = 0; 24326 int zero_height_ok_p = 0;
24328 24327
24329 if (FRAME_WINDOW_P (it->f)) 24328 if (FRAME_WINDOW_P (it->f))
24330 { 24329 {
24331 face = FACE_FROM_ID (it->f, it->face_id); 24330 struct face *face = FACE_FROM_ID (it->f, it->face_id);
24332 font = face->font ? face->font : FRAME_FONT (it->f); 24331 font = face->font ? face->font : FRAME_FONT (it->f);
24333 PREPARE_FACE_FOR_DISPLAY (it->f, face); 24332 PREPARE_FACE_FOR_DISPLAY (it->f, face);
24334 } 24333 }
diff --git a/src/xfaces.c b/src/xfaces.c
index 3e6e9dc8ec0..221387c4b6d 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -371,8 +371,6 @@ Lisp_Object Vface_alternative_font_registry_alist;
371 371
372static Lisp_Object Qscalable_fonts_allowed; 372static Lisp_Object Qscalable_fonts_allowed;
373 373
374#define DEFAULT_FONT_LIST_LIMIT 100
375
376/* The symbols `foreground-color' and `background-color' which can be 374/* The symbols `foreground-color' and `background-color' which can be
377 used as part of a `face' property. This is for compatibility with 375 used as part of a `face' property. This is for compatibility with
378 Emacs 20.2. */ 376 Emacs 20.2. */
@@ -1323,7 +1321,8 @@ load_color (struct frame *f, struct face *face, Lisp_Object name,
1323 try to emulate gray colors with a stipple from Vface_default_stipple. */ 1321 try to emulate gray colors with a stipple from Vface_default_stipple. */
1324 1322
1325static void 1323static void
1326load_face_colors (struct frame *f, struct face *face, Lisp_Object *attrs) 1324load_face_colors (struct frame *f, struct face *face,
1325 Lisp_Object attrs[LFACE_VECTOR_SIZE])
1327{ 1326{
1328 Lisp_Object fg, bg; 1327 Lisp_Object fg, bg;
1329 1328
@@ -1802,7 +1801,7 @@ the WIDTH times as wide as FACE on FRAME. */)
1802/* Check consistency of Lisp face attribute vector ATTRS. */ 1801/* Check consistency of Lisp face attribute vector ATTRS. */
1803 1802
1804static void 1803static void
1805check_lface_attrs (Lisp_Object *attrs) 1804check_lface_attrs (Lisp_Object attrs[LFACE_VECTOR_SIZE])
1806{ 1805{
1807 eassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX]) 1806 eassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX])
1808 || IGNORE_DEFFACE_P (attrs[LFACE_FAMILY_INDEX]) 1807 || IGNORE_DEFFACE_P (attrs[LFACE_FAMILY_INDEX])
@@ -2049,7 +2048,8 @@ lface_from_face_name (struct frame *f, Lisp_Object face_name, int signal_p)
2049 2048
2050static int 2049static int
2051get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name, 2050get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name,
2052 Lisp_Object *attrs, int signal_p) 2051 Lisp_Object attrs[LFACE_VECTOR_SIZE],
2052 int signal_p)
2053{ 2053{
2054 Lisp_Object lface; 2054 Lisp_Object lface;
2055 2055
@@ -2071,7 +2071,7 @@ get_lface_attributes_no_remap (struct frame *f, Lisp_Object face_name,
2071 2071
2072static int 2072static int
2073get_lface_attributes (struct frame *f, Lisp_Object face_name, 2073get_lface_attributes (struct frame *f, Lisp_Object face_name,
2074 Lisp_Object *attrs, int signal_p, 2074 Lisp_Object attrs[LFACE_VECTOR_SIZE], int signal_p,
2075 struct named_merge_point *named_merge_points) 2075 struct named_merge_point *named_merge_points)
2076{ 2076{
2077 Lisp_Object face_remapping; 2077 Lisp_Object face_remapping;
@@ -2108,7 +2108,7 @@ get_lface_attributes (struct frame *f, Lisp_Object face_name,
2108 specified, i.e. are non-nil. */ 2108 specified, i.e. are non-nil. */
2109 2109
2110static int 2110static int
2111lface_fully_specified_p (Lisp_Object *attrs) 2111lface_fully_specified_p (Lisp_Object attrs[LFACE_VECTOR_SIZE])
2112{ 2112{
2113 int i; 2113 int i;
2114 2114
@@ -4760,7 +4760,8 @@ DEFUN ("face-attributes-as-vector", Fface_attributes_as_vector,
4760 \(2) `close in spirit' to what the attributes specify, if not exact. */ 4760 \(2) `close in spirit' to what the attributes specify, if not exact. */
4761 4761
4762static int 4762static int
4763x_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, 4763x_supports_face_attributes_p (struct frame *f,
4764 Lisp_Object attrs[LFACE_VECTOR_SIZE],
4764 struct face *def_face) 4765 struct face *def_face)
4765{ 4766{
4766 Lisp_Object *def_attrs = def_face->lface; 4767 Lisp_Object *def_attrs = def_face->lface;
@@ -4862,7 +4863,8 @@ x_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs,
4862 substitution of a `dim' face for italic. */ 4863 substitution of a `dim' face for italic. */
4863 4864
4864static int 4865static int
4865tty_supports_face_attributes_p (struct frame *f, Lisp_Object *attrs, 4866tty_supports_face_attributes_p (struct frame *f,
4867 Lisp_Object attrs[LFACE_VECTOR_SIZE],
4866 struct face *def_face) 4868 struct face *def_face)
4867{ 4869{
4868 int weight, slant; 4870 int weight, slant;
@@ -5245,7 +5247,7 @@ be found. Value is ALIST. */)
5245 attribute of ATTRS doesn't name a fontset. */ 5247 attribute of ATTRS doesn't name a fontset. */
5246 5248
5247static int 5249static int
5248face_fontset (Lisp_Object *attrs) 5250face_fontset (Lisp_Object attrs[LFACE_VECTOR_SIZE])
5249{ 5251{
5250 Lisp_Object name; 5252 Lisp_Object name;
5251 5253
@@ -5474,7 +5476,8 @@ realize_named_face (struct frame *f, Lisp_Object symbol, int id)
5474 face. Value is a pointer to the newly created realized face. */ 5476 face. Value is a pointer to the newly created realized face. */
5475 5477
5476static struct face * 5478static struct face *
5477realize_face (struct face_cache *cache, Lisp_Object *attrs, int former_face_id) 5479realize_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE],
5480 int former_face_id)
5478{ 5481{
5479 struct face *face; 5482 struct face *face;
5480 5483
@@ -5551,7 +5554,7 @@ realize_non_ascii_face (struct frame *f, Lisp_Object font_object,
5551 created realized face. */ 5554 created realized face. */
5552 5555
5553static struct face * 5556static struct face *
5554realize_x_face (struct face_cache *cache, Lisp_Object *attrs) 5557realize_x_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE])
5555{ 5558{
5556 struct face *face = NULL; 5559 struct face *face = NULL;
5557#ifdef HAVE_WINDOW_SYSTEM 5560#ifdef HAVE_WINDOW_SYSTEM
@@ -5878,7 +5881,8 @@ map_tty_color (struct frame *f, struct face *face,
5878 Value is a pointer to the newly created realized face. */ 5881 Value is a pointer to the newly created realized face. */
5879 5882
5880static struct face * 5883static struct face *
5881realize_tty_face (struct face_cache *cache, Lisp_Object *attrs) 5884realize_tty_face (struct face_cache *cache,
5885 Lisp_Object attrs[LFACE_VECTOR_SIZE])
5882{ 5886{
5883 struct face *face; 5887 struct face *face;
5884 int weight, slant; 5888 int weight, slant;
@@ -6594,12 +6598,6 @@ syms_of_xfaces (void)
6594 defsubr (&Sdump_colors); 6598 defsubr (&Sdump_colors);
6595#endif 6599#endif
6596 6600
6597 DEFVAR_LISP ("font-list-limit", Vfont_list_limit,
6598 doc: /* Limit for font matching.
6599If an integer > 0, font matching functions won't load more than
6600that number of fonts when searching for a matching font. */);
6601 Vfont_list_limit = make_number (DEFAULT_FONT_LIST_LIMIT);
6602
6603 DEFVAR_LISP ("face-new-frame-defaults", Vface_new_frame_defaults, 6601 DEFVAR_LISP ("face-new-frame-defaults", Vface_new_frame_defaults,
6604 doc: /* List of global face definitions (for internal use only.) */); 6602 doc: /* List of global face definitions (for internal use only.) */);
6605 Vface_new_frame_defaults = Qnil; 6603 Vface_new_frame_defaults = Qnil;
diff --git a/src/xterm.c b/src/xterm.c
index 23685ee8ae6..a52a113ccda 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -3457,7 +3457,8 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra
3457 3457
3458 /* Don't stop displaying the initial startup message 3458 /* Don't stop displaying the initial startup message
3459 for a switch-frame event we don't need. */ 3459 for a switch-frame event we don't need. */
3460 if (NILP (Vterminal_frame) 3460 /* When run as a deamon, Vterminal_frame is always NIL. */
3461 if ((NILP (Vterminal_frame) || EQ (Fdaemonp(), Qt))
3461 && CONSP (Vframe_list) 3462 && CONSP (Vframe_list)
3462 && !NILP (XCDR (Vframe_list))) 3463 && !NILP (XCDR (Vframe_list)))
3463 { 3464 {