]> granicus.if.org Git - libass/commitdiff
Restore fontconfig runtime configuration
authorGrigori Goronzy <greg@chown.ath.cx>
Thu, 18 Aug 2011 04:19:33 +0000 (06:19 +0200)
committerGrigori Goronzy <greg@chown.ath.cx>
Fri, 10 Jul 2015 08:42:40 +0000 (10:42 +0200)
Pass the fontconfig configuration file option and enable switch
through into the font selector. This restores some of the old
functionality related to fontconfig.

However, the functionality to delay the fontconfig database update will
not come back. This is not a big problem. Later it will be possible to
manually add the fontconfig provider, which will delay the update in a
comparable way.

libass/ass_fontselect.c
libass/ass_fontselect.h
libass/ass_render_api.c

index 1de18905e9a690ab370589cb1ccb6674a05e0bb6..04a6cb4d5bd47328893283297d9ad0382da971bd 100644 (file)
@@ -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);
index 43a32fbb86a593620698e61d0727ffedfb3bcc6e..651968dda9004e3978a5d84d72bfd15f39d6acb2 100644 (file)
@@ -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);
index cfa8998d0ad06c0f3810f490384d1e3ba1f43f4d..5310060ec5a58814a6219ed70c5ae14ead5e9252 100644 (file)
@@ -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;
 }