summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libass/ass_fontselect.c11
-rw-r--r--libass/ass_fontselect.h2
-rw-r--r--libass/ass_render_api.c4
3 files changed, 8 insertions, 9 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);
diff --git a/libass/ass_fontselect.h b/libass/ass_fontselect.h
index 43a32fb..651968d 100644
--- a/libass/ass_fontselect.h
+++ b/libass/ass_fontselect.h
@@ -60,7 +60,7 @@ typedef struct font_provider_meta_data {
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);
char *ass_font_select(ASS_FontSelector *priv, ASS_Library *library,
ASS_Font *font, int *index, int *uid, uint32_t code);
void ass_fontselect_free(ASS_FontSelector *priv);
diff --git a/libass/ass_render_api.c b/libass/ass_render_api.c
index cfa8998..5310060 100644
--- a/libass/ass_render_api.c
+++ b/libass/ass_render_api.c
@@ -147,7 +147,7 @@ void ass_set_fonts(ASS_Renderer *priv, const char *default_font,
if (priv->fontselect)
ass_fontselect_free(priv->fontselect);
priv->fontselect = ass_fontselect_init(priv->library, priv->ftlibrary,
- default_family, default_font);
+ default_family, default_font, config, fc);
}
void ass_set_selective_style_override_enabled(ASS_Renderer *priv, int bits)
@@ -168,7 +168,7 @@ void ass_set_selective_style_override(ASS_Renderer *priv, ASS_Style *style)
int ass_fonts_update(ASS_Renderer *render_priv)
{
- //return fontconfig_update(render_priv->fontselect);
+ // This is just a stub now!
return 1;
}