diff options
| author | Jan Djärv | 2010-01-19 15:54:13 +0100 |
|---|---|---|
| committer | Jan Djärv | 2010-01-19 15:54:13 +0100 |
| commit | 67477f30cb0f563fe124decf9391af4a980c7bfb (patch) | |
| tree | ccb4014df1da994db29d72c689932e3426da5ea7 | |
| parent | 6a47c86a180882432ea34fcb0f7da8f4c27dd61e (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xsettings.c | 34 |
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 @@ | |||
| 1 | 2010-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 | |||
| 1 | 2010-01-18 Chong Yidong <cyd@stupidchicken.com> | 7 | 2010-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; | |||
| 42 | static struct x_display_info *first_dpyinfo; | 42 | static struct x_display_info *first_dpyinfo; |
| 43 | static Lisp_Object Qfont_name, Qfont_render; | 43 | static Lisp_Object Qfont_name, Qfont_render; |
| 44 | static int use_system_font; | 44 | static int use_system_font; |
| 45 | static Lisp_Object Vxft_settings; | ||
| 46 | |||
| 45 | 47 | ||
| 46 | #ifdef HAVE_GCONF | 48 | #ifdef HAVE_GCONF |
| 47 | static GConfClient *gconf_client; | 49 | static 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 |