* docs/CHANGES: Updated, using a description from Behdad.
This commit is contained in:
parent
48c86628de
commit
4eff854c27
|
@ -1,3 +1,7 @@
|
||||||
|
2015-01-14 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
* docs/CHANGES: Updated, using a description from Behdad.
|
||||||
|
|
||||||
2015-01-14 Behdad Esfahbod <behdad@behdad.org>
|
2015-01-14 Behdad Esfahbod <behdad@behdad.org>
|
||||||
|
|
||||||
* src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
|
* src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
|
||||||
|
|
25
docs/CHANGES
25
docs/CHANGES
|
@ -1,4 +1,29 @@
|
||||||
|
|
||||||
|
CHANGES BETWEEN 2.5.5 and 2.5.6
|
||||||
|
|
||||||
|
II. IMPORTANT CHANGES
|
||||||
|
|
||||||
|
- Behdad Esfahbod contributed code for improved thread-safety,
|
||||||
|
which results in the following model.
|
||||||
|
|
||||||
|
* An `FT_Face' object can only be safely used from one thread at
|
||||||
|
a time.
|
||||||
|
|
||||||
|
* An `FT_Library' object can now be used without modification
|
||||||
|
from multiple threads at the same time.
|
||||||
|
|
||||||
|
* `FT_Face' creation and destruction with the same `FT_Library'
|
||||||
|
object can only be done from one thread at a time.
|
||||||
|
|
||||||
|
One can use a single `FT_Library' object across threads as long
|
||||||
|
as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'.
|
||||||
|
Any calls to `FT_Load_Glyph' and similar API are safe and do not
|
||||||
|
need the lock to be held as long as the same `FT_Face' is not
|
||||||
|
used from multiple threads at the same time.
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
CHANGES BETWEEN 2.5.4 and 2.5.5
|
CHANGES BETWEEN 2.5.4 and 2.5.5
|
||||||
|
|
||||||
I. IMPORTANT BUG FIXES
|
I. IMPORTANT BUG FIXES
|
||||||
|
|
|
@ -394,8 +394,11 @@ FT_BEGIN_HEADER
|
||||||
/* It also embeds a memory manager (see @FT_Memory), as well as a */
|
/* It also embeds a memory manager (see @FT_Memory), as well as a */
|
||||||
/* scan-line converter object (see @FT_Raster). */
|
/* scan-line converter object (see @FT_Raster). */
|
||||||
/* */
|
/* */
|
||||||
/* In multi-threaded applications, make sure that the same FT_Library */
|
/* In multi-threaded applications it is easiest to use one */
|
||||||
/* object or any of its children doesn't get accessed in parallel. */
|
/* `FT_Library' object per thread. In case this is too cumbersome, */
|
||||||
|
/* a single `FT_Library' object across threads is possible also */
|
||||||
|
/* (since FreeType version 2.5.6), as long as a mutex lock is used */
|
||||||
|
/* around @FT_New_Face and @FT_Done_Face. */
|
||||||
/* */
|
/* */
|
||||||
/* <Note> */
|
/* <Note> */
|
||||||
/* Library objects are normally created by @FT_Init_FreeType, and */
|
/* Library objects are normally created by @FT_Init_FreeType, and */
|
||||||
|
@ -477,6 +480,14 @@ FT_BEGIN_HEADER
|
||||||
/* */
|
/* */
|
||||||
/* Use @FT_Done_Face to destroy it (along with its slot and sizes). */
|
/* Use @FT_Done_Face to destroy it (along with its slot and sizes). */
|
||||||
/* */
|
/* */
|
||||||
|
/* An `FT_Face' object can only be safely used from one thread at a */
|
||||||
|
/* time. Similarly, creation and destruction of `FT_Face' with the */
|
||||||
|
/* same @FT_Library object can only be done from one thread at a */
|
||||||
|
/* time. On the other hand, functions like @FT_Load_Glyph and its */
|
||||||
|
/* siblings are thread-safe and do not need the lock to be held as */
|
||||||
|
/* long as the same `FT_Face' object is not used from multiple */
|
||||||
|
/* threads at the same time. */
|
||||||
|
/* */
|
||||||
/* <Also> */
|
/* <Also> */
|
||||||
/* See @FT_FaceRec for the publicly accessible fields of a given face */
|
/* See @FT_FaceRec for the publicly accessible fields of a given face */
|
||||||
/* object. */
|
/* object. */
|
||||||
|
@ -1769,8 +1780,8 @@ FT_BEGIN_HEADER
|
||||||
/* use @FT_New_Library instead, followed by a call to */
|
/* use @FT_New_Library instead, followed by a call to */
|
||||||
/* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */
|
/* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */
|
||||||
/* */
|
/* */
|
||||||
/* For multi-threading applications each thread should have its own */
|
/* See the documentation of @FT_Library and @FT_Face for */
|
||||||
/* FT_Library object. */
|
/* multi-threading issues. */
|
||||||
/* */
|
/* */
|
||||||
/* If you need reference-counting (cf. @FT_Reference_Library), use */
|
/* If you need reference-counting (cf. @FT_Reference_Library), use */
|
||||||
/* @FT_New_Library and @FT_Done_Library. */
|
/* @FT_New_Library and @FT_Done_Library. */
|
||||||
|
|
Loading…
Reference in New Issue