aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2010-01-19 15:54:13 +0100
committerJan Djärv2010-01-19 15:54:13 +0100
commit67477f30cb0f563fe124decf9391af4a980c7bfb (patch)
treeccb4014df1da994db29d72c689932e3426da5ea7
parent6a47c86a180882432ea34fcb0f7da8f4c27dd61e (diff)
downloademacs-67477f30cb0f563fe124decf9391af4a980c7bfb.tar.gz
emacs-67477f30cb0f563fe124decf9391af4a980c7bfb.zip
Store settings in xft-settings for debug purposes.
(apply_xft_settings): Save settings in Vxft_settings for debug purpose. (syms_of_xsettings): Declare xft-settings.
-rw-r--r--src/ChangeLog6
-rw-r--r--src/xsettings.c34
2 files changed, 38 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 190e35d923f..c17788080d8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12010-01-19 Jan Djärv <jan.h.d@swipnet.se>
2
3 * xsettings.c (apply_xft_settings): Save settings in Vxft_settings
4 for debug purpose.
5 (syms_of_xsettings): Declare xft-settings.
6
12010-01-18 Chong Yidong <cyd@stupidchicken.com> 72010-01-18 Chong Yidong <cyd@stupidchicken.com>
2 8
3 * editfns.c (Fcurrent_time_string): Doc fix (Bug#5408). 9 * editfns.c (Fcurrent_time_string): Doc fix (Bug#5408).
diff --git a/src/xsettings.c b/src/xsettings.c
index 3e673129d4c..945007db2f0 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -42,6 +42,8 @@ static char *current_mono_font;
42static struct x_display_info *first_dpyinfo; 42static struct x_display_info *first_dpyinfo;
43static Lisp_Object Qfont_name, Qfont_render; 43static Lisp_Object Qfont_name, Qfont_render;
44static int use_system_font; 44static int use_system_font;
45static Lisp_Object Vxft_settings;
46
45 47
46#ifdef HAVE_GCONF 48#ifdef HAVE_GCONF
47static GConfClient *gconf_client; 49static GConfClient *gconf_client;
@@ -406,12 +408,13 @@ apply_xft_settings (dpyinfo, send_event_p)
406 FcPattern *pat; 408 FcPattern *pat;
407 struct xsettings settings, oldsettings; 409 struct xsettings settings, oldsettings;
408 int changed = 0; 410 int changed = 0;
411 char buf[256];
409 412
410 if (!read_xft_settings (dpyinfo, &settings)) 413 if (!read_xft_settings (dpyinfo, &settings))
411 return; 414 return;
412 415
413 memset (&oldsettings, 0, sizeof (oldsettings)); 416 memset (&oldsettings, 0, sizeof (oldsettings));
414 417 buf[0] = '\0';
415 pat = FcPatternCreate (); 418 pat = FcPatternCreate ();
416 XftDefaultSubstitute (dpyinfo->display, 419 XftDefaultSubstitute (dpyinfo->display,
417 XScreenNumberOfScreen (dpyinfo->screen), 420 XScreenNumberOfScreen (dpyinfo->screen),
@@ -428,20 +431,30 @@ apply_xft_settings (dpyinfo, send_event_p)
428 FcPatternDel (pat, FC_ANTIALIAS); 431 FcPatternDel (pat, FC_ANTIALIAS);
429 FcPatternAddBool (pat, FC_ANTIALIAS, settings.aa); 432 FcPatternAddBool (pat, FC_ANTIALIAS, settings.aa);
430 ++changed; 433 ++changed;
434 oldsettings.aa = settings.aa;
431 } 435 }
436 sprintf (buf, "Antialias: %d", oldsettings.aa);
437
432 if ((settings.seen & SEEN_HINTING) != 0 438 if ((settings.seen & SEEN_HINTING) != 0
433 && oldsettings.hinting != settings.hinting) 439 && oldsettings.hinting != settings.hinting)
434 { 440 {
435 FcPatternDel (pat, FC_HINTING); 441 FcPatternDel (pat, FC_HINTING);
436 FcPatternAddBool (pat, FC_HINTING, settings.hinting); 442 FcPatternAddBool (pat, FC_HINTING, settings.hinting);
437 ++changed; 443 ++changed;
444 oldsettings.hinting = settings.hinting;
438 } 445 }
446 if (strlen (buf) > 0) strcat (buf, ", ");
447 sprintf (buf+strlen (buf), "Hinting: %d", oldsettings.hinting);
439 if ((settings.seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings.rgba) 448 if ((settings.seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings.rgba)
440 { 449 {
441 FcPatternDel (pat, FC_RGBA); 450 FcPatternDel (pat, FC_RGBA);
442 FcPatternAddInteger (pat, FC_RGBA, settings.rgba); 451 FcPatternAddInteger (pat, FC_RGBA, settings.rgba);
452 oldsettings.rgba = settings.rgba;
443 ++changed; 453 ++changed;
444 } 454 }
455 if (strlen (buf) > 0) strcat (buf, ", ");
456 sprintf (buf+strlen (buf), "RGBA: %d", oldsettings.rgba);
457
445 /* Older fontconfig versions don't have FC_LCD_FILTER. */ 458 /* Older fontconfig versions don't have FC_LCD_FILTER. */
446 if ((settings.seen & SEEN_LCDFILTER) != 0 459 if ((settings.seen & SEEN_LCDFILTER) != 0
447 && oldsettings.lcdfilter != settings.lcdfilter) 460 && oldsettings.lcdfilter != settings.lcdfilter)
@@ -449,14 +462,22 @@ apply_xft_settings (dpyinfo, send_event_p)
449 FcPatternDel (pat, FC_LCD_FILTER); 462 FcPatternDel (pat, FC_LCD_FILTER);
450 FcPatternAddInteger (pat, FC_LCD_FILTER, settings.lcdfilter); 463 FcPatternAddInteger (pat, FC_LCD_FILTER, settings.lcdfilter);
451 ++changed; 464 ++changed;
465 oldsettings.lcdfilter = settings.lcdfilter;
452 } 466 }
467 if (strlen (buf) > 0) strcat (buf, ", ");
468 sprintf (buf+strlen (buf), "LCDFilter: %d", oldsettings.lcdfilter);
469
453 if ((settings.seen & SEEN_HINTSTYLE) != 0 470 if ((settings.seen & SEEN_HINTSTYLE) != 0
454 && oldsettings.hintstyle != settings.hintstyle) 471 && oldsettings.hintstyle != settings.hintstyle)
455 { 472 {
456 FcPatternDel (pat, FC_HINT_STYLE); 473 FcPatternDel (pat, FC_HINT_STYLE);
457 FcPatternAddInteger (pat, FC_HINT_STYLE, settings.hintstyle); 474 FcPatternAddInteger (pat, FC_HINT_STYLE, settings.hintstyle);
458 ++changed; 475 ++changed;
476 oldsettings.hintstyle = settings.hintstyle;
459 } 477 }
478 if (strlen (buf) > 0) strcat (buf, ", ");
479 sprintf (buf+strlen (buf), "Hintstyle: %d", oldsettings.hintstyle);
480
460 if ((settings.seen & SEEN_DPI) != 0 && oldsettings.dpi != settings.dpi 481 if ((settings.seen & SEEN_DPI) != 0 && oldsettings.dpi != settings.dpi
461 && settings.dpi > 0) 482 && settings.dpi > 0)
462 { 483 {
@@ -465,7 +486,8 @@ apply_xft_settings (dpyinfo, send_event_p)
465 FcPatternDel (pat, FC_DPI); 486 FcPatternDel (pat, FC_DPI);
466 FcPatternAddDouble (pat, FC_DPI, settings.dpi); 487 FcPatternAddDouble (pat, FC_DPI, settings.dpi);
467 ++changed; 488 ++changed;
468 489 oldsettings.dpi = settings.dpi;
490
469 /* Change the DPI on this display and all frames on the display. */ 491 /* Change the DPI on this display and all frames on the display. */
470 dpyinfo->resy = dpyinfo->resx = settings.dpi; 492 dpyinfo->resy = dpyinfo->resx = settings.dpi;
471 FOR_EACH_FRAME (tail, frame) 493 FOR_EACH_FRAME (tail, frame)
@@ -474,12 +496,16 @@ apply_xft_settings (dpyinfo, send_event_p)
474 XFRAME (frame)->resy = XFRAME (frame)->resx = settings.dpi; 496 XFRAME (frame)->resy = XFRAME (frame)->resx = settings.dpi;
475 } 497 }
476 498
499 if (strlen (buf) > 0) strcat (buf, ", ");
500 sprintf (buf+strlen (buf), "DPI: %lf", oldsettings.dpi);
501
477 if (changed) 502 if (changed)
478 { 503 {
479 XftDefaultSet (dpyinfo->display, pat); 504 XftDefaultSet (dpyinfo->display, pat);
480 if (send_event_p) 505 if (send_event_p)
481 store_font_changed_event (Qfont_render, 506 store_font_changed_event (Qfont_render,
482 XCAR (dpyinfo->name_list_element)); 507 XCAR (dpyinfo->name_list_element));
508 Vxft_settings = make_string (buf, strlen (buf));
483 } 509 }
484 else 510 else
485 FcPatternDestroy (pat); 511 FcPatternDestroy (pat);
@@ -638,6 +664,10 @@ syms_of_xsettings ()
638 doc: /* *Non-nil means to use the system defined font. */); 664 doc: /* *Non-nil means to use the system defined font. */);
639 use_system_font = 0; 665 use_system_font = 0;
640 666
667 DEFVAR_LISP ("xft-settings", &Vxft_settings,
668 doc: /* Font settings applied to Xft. */);
669 Vxft_settings = make_string ("", 0);
670
641#ifdef HAVE_XFT 671#ifdef HAVE_XFT
642 Fprovide (intern_c_string ("font-render-setting"), Qnil); 672 Fprovide (intern_c_string ("font-render-setting"), Qnil);
643#ifdef HAVE_GCONF 673#ifdef HAVE_GCONF