diff options
| author | Eli Zaretskii | 2013-03-28 20:13:59 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2013-03-28 20:13:59 +0200 |
| commit | d76bf86f438d4f5f9fe493ab76f02ffc78f3ae2e (patch) | |
| tree | 04fa8bc7bd2058a316a7ee30f8741d25bfd0b060 /src/ftfont.c | |
| parent | 2ef26ceb192c7683754cf0b4aa3087f501254332 (diff) | |
| parent | e74aeda863cd6896e06e92586f87b45d63d67d15 (diff) | |
| download | emacs-d76bf86f438d4f5f9fe493ab76f02ffc78f3ae2e.tar.gz emacs-d76bf86f438d4f5f9fe493ab76f02ffc78f3ae2e.zip | |
Merge from trunk and resolve conflicts.
Diffstat (limited to 'src/ftfont.c')
| -rw-r--r-- | src/ftfont.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/ftfont.c b/src/ftfont.c index f07ad6f33c7..0ad173af98a 100644 --- a/src/ftfont.c +++ b/src/ftfont.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* ftfont.c -- FreeType font driver. | 1 | /* ftfont.c -- FreeType font driver. |
| 2 | Copyright (C) 2006-2012 Free Software Foundation, Inc. | 2 | Copyright (C) 2006-2013 Free Software Foundation, Inc. |
| 3 | Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 | 3 | Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 |
| 4 | National Institute of Advanced Industrial Science and Technology (AIST) | 4 | National Institute of Advanced Industrial Science and Technology (AIST) |
| 5 | Registration Number H13PRO009 | 5 | Registration Number H13PRO009 |
| @@ -393,16 +393,14 @@ ftfont_lookup_cache (Lisp_Object key, enum ftfont_cache_for cache_for) | |||
| 393 | cache_data = xmalloc (sizeof *cache_data); | 393 | cache_data = xmalloc (sizeof *cache_data); |
| 394 | cache_data->ft_face = NULL; | 394 | cache_data->ft_face = NULL; |
| 395 | cache_data->fc_charset = NULL; | 395 | cache_data->fc_charset = NULL; |
| 396 | val = make_save_value (NULL, 0); | 396 | val = make_save_value (SAVE_TYPE_PTR_INT, cache_data, 0); |
| 397 | XSAVE_VALUE (val)->integer = 0; | ||
| 398 | XSAVE_VALUE (val)->pointer = cache_data; | ||
| 399 | cache = Fcons (Qnil, val); | 397 | cache = Fcons (Qnil, val); |
| 400 | Fputhash (key, cache, ft_face_cache); | 398 | Fputhash (key, cache, ft_face_cache); |
| 401 | } | 399 | } |
| 402 | else | 400 | else |
| 403 | { | 401 | { |
| 404 | val = XCDR (cache); | 402 | val = XCDR (cache); |
| 405 | cache_data = XSAVE_VALUE (val)->pointer; | 403 | cache_data = XSAVE_POINTER (val, 0); |
| 406 | } | 404 | } |
| 407 | 405 | ||
| 408 | if (cache_for == FTFONT_CACHE_FOR_ENTITY) | 406 | if (cache_for == FTFONT_CACHE_FOR_ENTITY) |
| @@ -468,7 +466,7 @@ ftfont_get_fc_charset (Lisp_Object entity) | |||
| 468 | 466 | ||
| 469 | cache = ftfont_lookup_cache (entity, FTFONT_CACHE_FOR_CHARSET); | 467 | cache = ftfont_lookup_cache (entity, FTFONT_CACHE_FOR_CHARSET); |
| 470 | val = XCDR (cache); | 468 | val = XCDR (cache); |
| 471 | cache_data = XSAVE_VALUE (val)->pointer; | 469 | cache_data = XSAVE_POINTER (val, 0); |
| 472 | return cache_data->fc_charset; | 470 | return cache_data->fc_charset; |
| 473 | } | 471 | } |
| 474 | 472 | ||
| @@ -1200,9 +1198,9 @@ ftfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size) | |||
| 1200 | filename = XCAR (val); | 1198 | filename = XCAR (val); |
| 1201 | idx = XCDR (val); | 1199 | idx = XCDR (val); |
| 1202 | val = XCDR (cache); | 1200 | val = XCDR (cache); |
| 1203 | cache_data = XSAVE_VALUE (XCDR (cache))->pointer; | 1201 | cache_data = XSAVE_POINTER (XCDR (cache), 0); |
| 1204 | ft_face = cache_data->ft_face; | 1202 | ft_face = cache_data->ft_face; |
| 1205 | if (XSAVE_VALUE (val)->integer > 0) | 1203 | if (XSAVE_INTEGER (val, 1) > 0) |
| 1206 | { | 1204 | { |
| 1207 | /* FT_Face in this cache is already used by the different size. */ | 1205 | /* FT_Face in this cache is already used by the different size. */ |
| 1208 | if (FT_New_Size (ft_face, &ft_size) != 0) | 1206 | if (FT_New_Size (ft_face, &ft_size) != 0) |
| @@ -1213,13 +1211,13 @@ ftfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size) | |||
| 1213 | return Qnil; | 1211 | return Qnil; |
| 1214 | } | 1212 | } |
| 1215 | } | 1213 | } |
| 1216 | XSAVE_VALUE (val)->integer++; | 1214 | set_save_integer (val, 1, XSAVE_INTEGER (val, 1) + 1); |
| 1217 | size = XINT (AREF (entity, FONT_SIZE_INDEX)); | 1215 | size = XINT (AREF (entity, FONT_SIZE_INDEX)); |
| 1218 | if (size == 0) | 1216 | if (size == 0) |
| 1219 | size = pixel_size; | 1217 | size = pixel_size; |
| 1220 | if (FT_Set_Pixel_Sizes (ft_face, size, size) != 0) | 1218 | if (FT_Set_Pixel_Sizes (ft_face, size, size) != 0) |
| 1221 | { | 1219 | { |
| 1222 | if (XSAVE_VALUE (val)->integer == 0) | 1220 | if (XSAVE_INTEGER (val, 1) == 0) |
| 1223 | FT_Done_Face (ft_face); | 1221 | FT_Done_Face (ft_face); |
| 1224 | return Qnil; | 1222 | return Qnil; |
| 1225 | } | 1223 | } |
| @@ -1328,10 +1326,10 @@ ftfont_close (FRAME_PTR f, struct font *font) | |||
| 1328 | cache = ftfont_lookup_cache (val, FTFONT_CACHE_FOR_FACE); | 1326 | cache = ftfont_lookup_cache (val, FTFONT_CACHE_FOR_FACE); |
| 1329 | eassert (CONSP (cache)); | 1327 | eassert (CONSP (cache)); |
| 1330 | val = XCDR (cache); | 1328 | val = XCDR (cache); |
| 1331 | (XSAVE_VALUE (val)->integer)--; | 1329 | set_save_integer (val, 1, XSAVE_INTEGER (val, 1) - 1); |
| 1332 | if (XSAVE_VALUE (val)->integer == 0) | 1330 | if (XSAVE_INTEGER (val, 1) == 0) |
| 1333 | { | 1331 | { |
| 1334 | struct ftfont_cache_data *cache_data = XSAVE_VALUE (val)->pointer; | 1332 | struct ftfont_cache_data *cache_data = XSAVE_POINTER (val, 0); |
| 1335 | 1333 | ||
| 1336 | FT_Done_Face (cache_data->ft_face); | 1334 | FT_Done_Face (cache_data->ft_face); |
| 1337 | #ifdef HAVE_LIBOTF | 1335 | #ifdef HAVE_LIBOTF |
| @@ -2543,7 +2541,7 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font, | |||
| 2543 | 2541 | ||
| 2544 | if (NILP (lglyph)) | 2542 | if (NILP (lglyph)) |
| 2545 | { | 2543 | { |
| 2546 | lglyph = Fmake_vector (make_number (LGLYPH_SIZE), Qnil); | 2544 | lglyph = LGLYPH_NEW (); |
| 2547 | LGSTRING_SET_GLYPH (lgstring, i, lglyph); | 2545 | LGSTRING_SET_GLYPH (lgstring, i, lglyph); |
| 2548 | } | 2546 | } |
| 2549 | LGLYPH_SET_FROM (lglyph, g->from); | 2547 | LGLYPH_SET_FROM (lglyph, g->from); |
| @@ -2557,9 +2555,8 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font, | |||
| 2557 | LGLYPH_SET_DESCENT (lglyph, g->descent >> 6); | 2555 | LGLYPH_SET_DESCENT (lglyph, g->descent >> 6); |
| 2558 | if (g->adjusted) | 2556 | if (g->adjusted) |
| 2559 | { | 2557 | { |
| 2560 | Lisp_Object vec; | 2558 | Lisp_Object vec = make_uninit_vector (3); |
| 2561 | 2559 | ||
| 2562 | vec = Fmake_vector (make_number (3), Qnil); | ||
| 2563 | ASET (vec, 0, make_number (g->xoff >> 6)); | 2560 | ASET (vec, 0, make_number (g->xoff >> 6)); |
| 2564 | ASET (vec, 1, make_number (g->yoff >> 6)); | 2561 | ASET (vec, 1, make_number (g->yoff >> 6)); |
| 2565 | ASET (vec, 2, make_number (g->xadv >> 6)); | 2562 | ASET (vec, 2, make_number (g->xadv >> 6)); |