summaryrefslogtreecommitdiff
path: root/src/ftxfont.c
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2014-07-03 16:20:00 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2014-07-03 16:20:00 +0400
commit60ab579771527dcc29547119f2c1b7099eda4d55 (patch)
tree8804ef001fbd3b73845b9f5dc690dd188054a6f6 /src/ftxfont.c
parent95268e987c484b98aac3de54cf91d65db16f4c22 (diff)
downloademacs-60ab579771527dcc29547119f2c1b7099eda4d55.tar.gz
Use convenient alists to manage per-frame font driver-specific data.
* frame.h (struct frame): Rename font_data_list to... [HAVE_XFT || HAVE_FREETYPE]: ... font_data, which is a Lisp_Object now. * font.h (struct font_data_list): Remove; no longer need a special data type. (font_put_frame_data, font_get_frame_data) [HAVE_XFT || HAVE_FREETYPE]: Adjust prototypes. * font.c (font_put_frame_data, font_get_frame_data) [HAVE_XFT || HAVE_FREETYPE]: Prefer alist functions to ad-hoc list management. * xftfont.c (xftfont_get_xft_draw, xftfont_end_for_frame): Related users changed. * ftxfont.c (ftxfont_get_gcs, ftxfont_end_for_frame): Likewise. Prefer convenient xmalloc and xfree.
Diffstat (limited to 'src/ftxfont.c')
-rw-r--r--src/ftxfont.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/ftxfont.c b/src/ftxfont.c
index 53f2616bb62..63e3477ebf4 100644
--- a/src/ftxfont.c
+++ b/src/ftxfont.c
@@ -59,7 +59,7 @@ ftxfont_get_gcs (struct frame *f, unsigned long foreground, unsigned long backgr
XColor color;
XGCValues xgcv;
int i;
- struct ftxfont_frame_data *data = font_get_frame_data (f, &ftxfont_driver);
+ struct ftxfont_frame_data *data = font_get_frame_data (f, Qftx);
struct ftxfont_frame_data *prev = NULL, *this = NULL, *new;
if (data)
@@ -78,19 +78,11 @@ ftxfont_get_gcs (struct frame *f, unsigned long foreground, unsigned long backgr
}
}
- new = malloc (sizeof *new);
- if (! new)
- return NULL;
+ new = xmalloc (sizeof *new);
new->next = this;
if (prev)
- {
prev->next = new;
- }
- else if (font_put_frame_data (f, &ftxfont_driver, new) < 0)
- {
- free (new);
- return NULL;
- }
+ font_put_frame_data (f, Qftx, new);
new->colors[0].pixel = background;
new->colors[1].pixel = foreground;
@@ -123,8 +115,8 @@ ftxfont_get_gcs (struct frame *f, unsigned long foreground, unsigned long backgr
if (prev)
prev->next = new->next;
else if (data)
- font_put_frame_data (f, &ftxfont_driver, new->next);
- free (new);
+ font_put_frame_data (f, Qftx, new->next);
+ xfree (new);
return NULL;
}
return new->gcs;
@@ -337,7 +329,7 @@ ftxfont_draw (struct glyph_string *s, int from, int to, int x, int y,
static int
ftxfont_end_for_frame (struct frame *f)
{
- struct ftxfont_frame_data *data = font_get_frame_data (f, &ftxfont_driver);
+ struct ftxfont_frame_data *data = font_get_frame_data (f, Qftx);
block_input ();
while (data)
@@ -347,11 +339,11 @@ ftxfont_end_for_frame (struct frame *f)
for (i = 0; i < 6; i++)
XFreeGC (FRAME_X_DISPLAY (f), data->gcs[i]);
- free (data);
+ xfree (data);
data = next;
}
unblock_input ();
- font_put_frame_data (f, &ftxfont_driver, NULL);
+ font_put_frame_data (f, Qftx, NULL);
return 0;
}