summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontselect.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r--libass/ass_fontselect.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c
index 1de1890..04a6cb4 100644
--- a/libass/ass_fontselect.c
+++ b/libass/ass_fontselect.c
@@ -210,7 +210,7 @@ void ass_font_provider_free(ASS_FontProvider *provider)
// TODO: this should probably remove all fonts that belong
// to this provider from the list
- if (provider->funcs.destroy_provider)
+ if (provider && provider->funcs.destroy_provider)
provider->funcs.destroy_provider(provider->priv);
free(provider);
}
@@ -617,7 +617,7 @@ ass_embedded_fonts_add_provider(ASS_Library *lib, ASS_FontSelector *selector,
ASS_FontSelector *
ass_fontselect_init(ASS_Library *library,
FT_Library ftlibrary, const char *family,
- const char *path)
+ const char *path, const char *config, int fc)
{
ASS_FontSelector *priv = calloc(1, sizeof(ASS_FontSelector));
@@ -630,8 +630,9 @@ ass_fontselect_init(ASS_Library *library,
ftlibrary);
#ifdef CONFIG_FONTCONFIG
- // XXX: for now, always add the fontconfig provider
- priv->default_provider = ass_fontconfig_add_provider(library, priv, NULL);
+ if (fc != 0)
+ priv->default_provider = ass_fontconfig_add_provider(library,
+ priv, config);
#endif
return priv;
@@ -665,9 +666,7 @@ void ass_fontselect_free(ASS_FontSelector *priv)
// TODO: we should track all child font providers and
// free them here
-#ifdef CONFIG_FONTCONFIG
ass_font_provider_free(priv->default_provider);
-#endif
ass_font_provider_free(priv->embedded_provider);
free(priv);