summaryrefslogtreecommitdiff
path: root/src/font/Collection.zig
diff options
context:
space:
mode:
authorQwerasd <qwerasd205@users.noreply.github.com>2025-04-30 14:02:46 -0600
committerQwerasd <qwerasd205@users.noreply.github.com>2025-05-01 18:22:37 -0600
commitcfedd477b2843c4624aac88b76ec24cd7ecd36d6 (patch)
tree0a16a851411e99d0c4287c0435147ab013bc1e39 /src/font/Collection.zig
parente79bf71f2322fa5d54af07f2985f8460290f2085 (diff)
font/freetype: introduce mutexes to ensure thread safety of Library and Face
For details see comments and FreeType docs @ https://freetype.org/freetype2/docs/reference/ft2-library_setup.html#ft_library https://freetype.org/freetype2/docs/reference/ft2-face_creation.html#ft_face tl;dr: FT_New_Face and FT_Done_Face require the Library to be locked for thread safety, and FT_Load_Glyph and FT_Render_Glyph and friends need the face to be locked for thread safety, since we're sharing faces across threads.
Diffstat (limited to 'src/font/Collection.zig')
-rw-r--r--src/font/Collection.zig20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/font/Collection.zig b/src/font/Collection.zig
index cfc633b04..66e13c109 100644
--- a/src/font/Collection.zig
+++ b/src/font/Collection.zig
@@ -78,8 +78,8 @@ pub const AddError = Allocator.Error || error{
/// next in priority if others exist already, i.e. it'll be the _last_ to be
/// searched for a glyph in that list.
///
-/// The collection takes ownership of the face. The face will be deallocated
-/// when the collection is deallocated.
+/// If no error is encountered then the collection takes ownership of the face,
+/// in which case face will be deallocated when the collection is deallocated.
///
/// If a loaded face is added to the collection, it should be the same
/// size as all the other faces in the collection. This function will not
@@ -700,7 +700,7 @@ test "add full" {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -746,7 +746,7 @@ test getFace {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -770,7 +770,7 @@ test getIndex {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -801,7 +801,7 @@ test completeStyles {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -828,7 +828,7 @@ test setSize {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -851,7 +851,7 @@ test hasCodepoint {
const alloc = testing.allocator;
const testFont = font.embedded.regular;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -875,7 +875,7 @@ test "hasCodepoint emoji default graphical" {
const alloc = testing.allocator;
const testEmoji = font.embedded.emoji;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();
@@ -898,7 +898,7 @@ test "metrics" {
const alloc = testing.allocator;
const testFont = font.embedded.inconsolata;
- var lib = try Library.init();
+ var lib = try Library.init(alloc);
defer lib.deinit();
var c = init();