summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype/docs/threads.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/freetype/docs/threads.txt')
-rw-r--r--Build/source/libs/freetype/docs/threads.txt117
1 files changed, 0 insertions, 117 deletions
diff --git a/Build/source/libs/freetype/docs/threads.txt b/Build/source/libs/freetype/docs/threads.txt
deleted file mode 100644
index 6e157fa3e1a..00000000000
--- a/Build/source/libs/freetype/docs/threads.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-Threads with FreeType
-=====================
-
-
-The FreeType engine can now be compiled in thread-safe mode.
-Because we want to keep the engine small and fast, the thread
-protection is simple. This file gives an overview of what you can
-do, and what you should strictly never do.
-
-
-How to enable thread-safe support?
-
-A. You must have a valid replacement for the file `lib/ttmutex.c'
- which calls your system's API to create, lock, and release
- mutexes or semaphores. The current implementation is a dummy and
- doesn't do anything.
-
-B. You must re-define the configuration macro
- TT_CONFIG_OPTION_THREAD_SAFE located in `ttconfig.h'. Then
- recompile.
-
-
-IMPORTANT NOTE:
-
- If two threads create and use their own TT_Engine structure, they
- can freely call the library concurrently on each of them (as well
- as all their related objects), even in the non-threaded build.
- The following remarks only apply to concurrent requests performed
- on a single TT_Engine shared by multiple threads.
-
-
---------------------------------------------------------------------
-
-- What you can do:
-
- With the exceptions listed below (in `What you can't do'), you can
- call all API functions concurrently with two different threads.
- This includes:
-
- Creating two or more faces from the same engine (i.e. concurrent
- calls to TT_Open_Face()/TT_Open_Collection()).
-
- Creating two or more instances from the same face object
- (i.e. concurrent calls to TT_New_Instance()).
-
- Creating two or more glyph containers from the same face object
- (i.e. concurrent calls to TT_New_Glyph()).
-
- The same holds for destruction of objects.
-
- Load two or more glyphs concurrently for the same face or
- instance (i.e. concurrent TT_Load_Glyph() calls).
-
- Render two or more glyphs at the same time, in the same engine
- (i.e. calling TT_Get_Glyph_Bitmap()/TT_Get_Glyph_Pixmap() or
- TT_Get_Outline_Bitmap()/TT_GetOutline_Pixmap() concurrently).
-
- NOTE: The scan-line converter can only render one glyph at a
- time, for a given TT_Engine. Concurrent calls are
- synchronized through a mutex, though.
-
- If you really, _really_, need to generate bitmaps or
- pixmaps concurrently, create an additional engine and use
- it with TT_Get_Outline_Bitmap()/TT_Get_Outline_Pixmap()
- (you don't need to create any object in it, the outline
- can come from any source too).
-
- This is, however, not recommended (it works perfectly, but
- this could change in the future for various technical
- reasons).
-
-
----------------------------------------------------------------------------
-
-- What you cannot do:
-
- - You shouldn't try to delete an object while still using it with
- another thread. The engine doesn't protect you from stupidity!
- For example, these concurrent calls:
-
- TT_Close_Face( face );
- TT_Get_Glyph_Bitmap( glyph, &bitmap );
-
- will act unexpectedly if the glyph is a child of the face (i.e.,
- was created with TT_New_Glyph( face, &glyph ))
- ^^^^
- same face
-
- Here are some other examples:
-
- TT_Get_Glyph_Outline( glyph1, ... );
- TT_Load_Glyph( instance, glyph1, ... );
-
- or
-
- TT_Get_Outline_BBox( outline, &bbox );
- TT_Transform_Outline( outline );
-
- etc.
-
- You get the idea: Only the face and instances are protected --
- glyph containers and outlines should be thread-specific.
-
-
- - You shouldn't initialize extensions in an engine concurrently
- (which is what every mere mortal will do anyway :-).
-
-
-
-That's about it. Now enjoy the lib ;-)
-
-
-PS: See the `MT-Note' and `MT-Safe' remarks in ttapi.c for more
- detailed information on each specific function.
-
-
---- end of threads.txt ---