aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c55
1 files changed, 18 insertions, 37 deletions
diff --git a/src/font.c b/src/font.c
index 251d43ba8b2..7b9edcd3fb8 100644
--- a/src/font.c
+++ b/src/font.c
@@ -3539,53 +3539,34 @@ font_update_drivers (struct frame *f, Lisp_Object new_drivers)
3539 return active_drivers; 3539 return active_drivers;
3540} 3540}
3541 3541
3542int 3542#if defined (HAVE_XFT) || defined (HAVE_FREETYPE)
3543font_put_frame_data (struct frame *f, struct font_driver *driver, void *data)
3544{
3545 struct font_data_list *list, *prev;
3546 3543
3547 for (prev = NULL, list = f->font_data_list; list; 3544void
3548 prev = list, list = list->next) 3545font_put_frame_data (struct frame *f, Lisp_Object driver, void *data)
3549 if (list->driver == driver) 3546{
3550 break; 3547 Lisp_Object val = assq_no_quit (driver, f->font_data);
3551 if (! data)
3552 {
3553 if (list)
3554 {
3555 if (prev)
3556 prev->next = list->next;
3557 else
3558 f->font_data_list = list->next;
3559 xfree (list);
3560 }
3561 return 0;
3562 }
3563 3548
3564 if (! list) 3549 if (!data)
3550 f->font_data = Fdelq (val, f->font_data);
3551 else
3565 { 3552 {
3566 list = xmalloc (sizeof *list); 3553 if (NILP (val))
3567 list->driver = driver; 3554 f->font_data = Fcons (Fcons (driver, make_save_ptr (data)),
3568 list->next = f->font_data_list; 3555 f->font_data);
3569 f->font_data_list = list; 3556 else
3557 XSETCDR (val, make_save_ptr (data));
3570 } 3558 }
3571 list->data = data;
3572 return 0;
3573} 3559}
3574 3560
3575
3576void * 3561void *
3577font_get_frame_data (struct frame *f, struct font_driver *driver) 3562font_get_frame_data (struct frame *f, Lisp_Object driver)
3578{ 3563{
3579 struct font_data_list *list; 3564 Lisp_Object val = assq_no_quit (driver, f->font_data);
3580 3565
3581 for (list = f->font_data_list; list; list = list->next) 3566 return NILP (val) ? NULL : XSAVE_POINTER (XCDR (val), 0);
3582 if (list->driver == driver)
3583 break;
3584 if (! list)
3585 return NULL;
3586 return list->data;
3587} 3567}
3588 3568
3569#endif /* HAVE_XFT || HAVE_FREETYPE */
3589 3570
3590/* Sets attributes on a font. Any properties that appear in ALIST and 3571/* Sets attributes on a font. Any properties that appear in ALIST and
3591 BOOLEAN_PROPERTIES or NON_BOOLEAN_PROPERTIES are set on the font. 3572 BOOLEAN_PROPERTIES or NON_BOOLEAN_PROPERTIES are set on the font.