summaryrefslogtreecommitdiffstats
path: root/libass/ass_coretext.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_coretext.c')
-rw-r--r--libass/ass_coretext.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/libass/ass_coretext.c b/libass/ass_coretext.c
index 7bb34ac..b6870a6 100644
--- a/libass/ass_coretext.c
+++ b/libass/ass_coretext.c
@@ -125,18 +125,12 @@ static char *get_name(CTFontDescriptorRef fontd, CFStringRef attr)
return ret;
}
-static void process_descriptors(ASS_Library *lib, ASS_FontProvider *provider,
- CFArrayRef fontsd)
+static void process_descriptors(ASS_Library *lib, FT_Library ftlib,
+ ASS_FontProvider *provider, CFArrayRef fontsd)
{
if (!fontsd)
return;
- FT_Library ftlib;
- if (FT_Init_FreeType(&ftlib)) {
- ass_msg(lib, MSGL_WARN, "Failed to create FT lib");
- return;
- }
-
for (int i = 0; i < CFArrayGetCount(fontsd); i++) {
ASS_FontProviderMetaData meta = {0};
CTFontDescriptorRef fontd = CFArrayGetValueAtIndex(fontsd, i);
@@ -170,13 +164,13 @@ static void process_descriptors(ASS_Library *lib, ASS_FontProvider *provider,
free(ps_name);
free(path);
}
-
- FT_Done_FreeType(ftlib);
}
-static void match_fonts(ASS_Library *lib, ASS_FontProvider *provider,
+static void match_fonts(void *priv, ASS_Library *lib, ASS_FontProvider *provider,
char *name)
{
+ FT_Library ftlib = priv;
+
enum { attributes_n = 3 };
CTFontDescriptorRef ctdescrs[attributes_n];
CFMutableDictionaryRef cfattrs[attributes_n];
@@ -204,7 +198,7 @@ static void match_fonts(ASS_Library *lib, ASS_FontProvider *provider,
CFArrayRef fontsd =
CTFontCollectionCreateMatchingFontDescriptors(ctcoll);
- process_descriptors(lib, provider, fontsd);
+ process_descriptors(lib, ftlib, provider, fontsd);
SAFE_CFRelease(fontsd);
SAFE_CFRelease(ctcoll);
@@ -261,7 +255,7 @@ static ASS_FontProviderFuncs coretext_callbacks = {
ASS_FontProvider *
ass_coretext_add_provider(ASS_Library *lib, ASS_FontSelector *selector,
- const char *config)
+ const char *config, FT_Library ftlib)
{
- return ass_font_provider_new(selector, &coretext_callbacks, NULL);
+ return ass_font_provider_new(selector, &coretext_callbacks, ftlib);
}