diff options
| author | Paul Eggert | 2016-12-01 21:47:12 -0800 |
|---|---|---|
| committer | Paul Eggert | 2016-12-01 21:48:30 -0800 |
| commit | ebb96114d88af64cbb72f42052cb359ba8010aa2 (patch) | |
| tree | 88795f2e9bc74b5c1a96c04c8cfe069b7d5f601f /src/font.c | |
| parent | dd4b913153a818dbd42cb395d2c36f216e09a8ec (diff) | |
| download | emacs-ebb96114d88af64cbb72f42052cb359ba8010aa2.tar.gz emacs-ebb96114d88af64cbb72f42052cb359ba8010aa2.zip | |
Make struct font_drivers read-only
This simplifies the code a bit, and makes the structs more
shareable and less likely to become corrupt.
* src/alloc.c (cleanup_vector):
* src/font.c (valid_font_driver, font_prepare_cache)
(font_finish_cache, font_get_cache, font_clear_cache)
(register_font_driver, font_update_drivers):
* src/font.h (struct font, struct font_driver_list)
(valid_font_driver):
struct font_drivers are now const.
* src/font.c, src/ftcrfont.c, src/ftfont.c, src/nsfont.m, src/xfont.c:
Omit no-longer-necessary decls.
* src/ftcrfont.c (syms_of_ftcrfont):
* src/ftxfont.c (syms_of_ftxfont):
* src/xftfont.c (syms_of_xftfont):
Omit no-longer-necessary initialization code.
* src/ftcrfont.c (ftcrfont_driver):
* src/ftfont.c (ftfont_driver):
* src/ftxfont.c (ftxfont_driver):
* src/macfont.m (macfont_driver):
* src/nsfont.m (nsfont_driver):
* src/xfont.c (xfont_driver):
* src/xftfont.c (xftfont_driver):
Use C99-style initializer for ease of maintenance, and make it const.
* src/ftcrfont.c, src/ftxfont.c, src/xftfont.c:
Refer to functions like ftfont_text_extents directly.
* src/ftfont.c (ftfont_get_cache, ftfont_list, ftfont_list_family)
(ftfont_has_char, ftfont_encode_char, ftfont_text_extents)
(ftfont_get_bitmap, ftfont_anchor_point, ftfont_otf_capability)
(ftfont_variation_glyphs, ftfont_filter_properties)
(ftfont_combining_capability):
* src/xfont.c (xfont_get_cache):
Now extern, so that other modules’ struct font_drivers can use
them directly.
* src/macfont.m (macfont_descriptor_entity):
* src/nsfont.m (nsfont_open):
Use constant directly; this is clearer.
Diffstat (limited to 'src/font.c')
| -rw-r--r-- | src/font.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/font.c b/src/font.c index ce632335256..9fe7c26ea9c 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -132,7 +132,7 @@ static struct font_driver_list *font_driver_list; | |||
| 132 | /* Used to catch bogus pointers in font objects. */ | 132 | /* Used to catch bogus pointers in font objects. */ |
| 133 | 133 | ||
| 134 | bool | 134 | bool |
| 135 | valid_font_driver (struct font_driver *drv) | 135 | valid_font_driver (struct font_driver const *drv) |
| 136 | { | 136 | { |
| 137 | Lisp_Object tail, frame; | 137 | Lisp_Object tail, frame; |
| 138 | struct font_driver_list *fdl; | 138 | struct font_driver_list *fdl; |
| @@ -2543,14 +2543,11 @@ font_match_p (Lisp_Object spec, Lisp_Object font) | |||
| 2543 | is a number frames sharing this cache, and FONT-CACHE-DATA is a | 2543 | is a number frames sharing this cache, and FONT-CACHE-DATA is a |
| 2544 | cons (FONT-SPEC . [FONT-ENTITY ...]). */ | 2544 | cons (FONT-SPEC . [FONT-ENTITY ...]). */ |
| 2545 | 2545 | ||
| 2546 | static void font_prepare_cache (struct frame *, struct font_driver *); | ||
| 2547 | static void font_finish_cache (struct frame *, struct font_driver *); | ||
| 2548 | static Lisp_Object font_get_cache (struct frame *, struct font_driver *); | ||
| 2549 | static void font_clear_cache (struct frame *, Lisp_Object, | 2546 | static void font_clear_cache (struct frame *, Lisp_Object, |
| 2550 | struct font_driver *); | 2547 | struct font_driver const *); |
| 2551 | 2548 | ||
| 2552 | static void | 2549 | static void |
| 2553 | font_prepare_cache (struct frame *f, struct font_driver *driver) | 2550 | font_prepare_cache (struct frame *f, struct font_driver const *driver) |
| 2554 | { | 2551 | { |
| 2555 | Lisp_Object cache, val; | 2552 | Lisp_Object cache, val; |
| 2556 | 2553 | ||
| @@ -2572,7 +2569,7 @@ font_prepare_cache (struct frame *f, struct font_driver *driver) | |||
| 2572 | 2569 | ||
| 2573 | 2570 | ||
| 2574 | static void | 2571 | static void |
| 2575 | font_finish_cache (struct frame *f, struct font_driver *driver) | 2572 | font_finish_cache (struct frame *f, struct font_driver const *driver) |
| 2576 | { | 2573 | { |
| 2577 | Lisp_Object cache, val, tmp; | 2574 | Lisp_Object cache, val, tmp; |
| 2578 | 2575 | ||
| @@ -2593,7 +2590,7 @@ font_finish_cache (struct frame *f, struct font_driver *driver) | |||
| 2593 | 2590 | ||
| 2594 | 2591 | ||
| 2595 | static Lisp_Object | 2592 | static Lisp_Object |
| 2596 | font_get_cache (struct frame *f, struct font_driver *driver) | 2593 | font_get_cache (struct frame *f, struct font_driver const *driver) |
| 2597 | { | 2594 | { |
| 2598 | Lisp_Object val = driver->get_cache (f); | 2595 | Lisp_Object val = driver->get_cache (f); |
| 2599 | Lisp_Object type = driver->type; | 2596 | Lisp_Object type = driver->type; |
| @@ -2608,7 +2605,8 @@ font_get_cache (struct frame *f, struct font_driver *driver) | |||
| 2608 | 2605 | ||
| 2609 | 2606 | ||
| 2610 | static void | 2607 | static void |
| 2611 | font_clear_cache (struct frame *f, Lisp_Object cache, struct font_driver *driver) | 2608 | font_clear_cache (struct frame *f, Lisp_Object cache, |
| 2609 | struct font_driver const *driver) | ||
| 2612 | { | 2610 | { |
| 2613 | Lisp_Object tail, elt; | 2611 | Lisp_Object tail, elt; |
| 2614 | Lisp_Object entity; | 2612 | Lisp_Object entity; |
| @@ -3463,7 +3461,7 @@ font_open_by_name (struct frame *f, Lisp_Object name) | |||
| 3463 | (e.g. syms_of_xfont). */ | 3461 | (e.g. syms_of_xfont). */ |
| 3464 | 3462 | ||
| 3465 | void | 3463 | void |
| 3466 | register_font_driver (struct font_driver *driver, struct frame *f) | 3464 | register_font_driver (struct font_driver const *driver, struct frame *f) |
| 3467 | { | 3465 | { |
| 3468 | struct font_driver_list *root = f ? f->font_driver_list : font_driver_list; | 3466 | struct font_driver_list *root = f ? f->font_driver_list : font_driver_list; |
| 3469 | struct font_driver_list *prev, *list; | 3467 | struct font_driver_list *prev, *list; |
| @@ -3524,7 +3522,7 @@ font_update_drivers (struct frame *f, Lisp_Object new_drivers) | |||
| 3524 | drivers. */ | 3522 | drivers. */ |
| 3525 | for (list = f->font_driver_list; list; list = list->next) | 3523 | for (list = f->font_driver_list; list; list = list->next) |
| 3526 | { | 3524 | { |
| 3527 | struct font_driver *driver = list->driver; | 3525 | struct font_driver const *driver = list->driver; |
| 3528 | if ((EQ (new_drivers, Qt) || ! NILP (Fmemq (driver->type, new_drivers))) | 3526 | if ((EQ (new_drivers, Qt) || ! NILP (Fmemq (driver->type, new_drivers))) |
| 3529 | != list->on) | 3527 | != list->on) |
| 3530 | { | 3528 | { |
| @@ -3587,7 +3585,7 @@ font_update_drivers (struct frame *f, Lisp_Object new_drivers) | |||
| 3587 | and then use it under w32 or ns. */ | 3585 | and then use it under w32 or ns. */ |
| 3588 | for (list = f->font_driver_list; list; list = list->next) | 3586 | for (list = f->font_driver_list; list; list = list->next) |
| 3589 | { | 3587 | { |
| 3590 | struct font_driver *driver = list->driver; | 3588 | struct font_driver const *driver = list->driver; |
| 3591 | eassert (! list->on); | 3589 | eassert (! list->on); |
| 3592 | if (! driver->start_for_frame | 3590 | if (! driver->start_for_frame |
| 3593 | || driver->start_for_frame (f) == 0) | 3591 | || driver->start_for_frame (f) == 0) |