summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontconfig.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-08-06 17:56:01 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-08-06 17:56:01 +0000
commitfd6ada4afe859e5954a4ec68fcd1560ae50e5bc7 (patch)
tree5baf76b10888ac00ade491e86f5bb1d8aee99192 /libass/ass_fontconfig.c
parent2f8682c346bb031d08bf1d2942f1a7e99a419427 (diff)
downloadlibass-fd6ada4afe859e5954a4ec68fcd1560ae50e5bc7.tar.bz2
libass-fd6ada4afe859e5954a4ec68fcd1560ae50e5bc7.tar.xz
Use FontConfig cache to speedup mplayer startup.
Patch by Zealot <zealot0630 at gmail dot com>. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19346 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_fontconfig.c')
-rw-r--r--libass/ass_fontconfig.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c
index f3e6fdf0..9c0b84fb 100644
--- a/libass/ass_fontconfig.c
+++ b/libass/ass_fontconfig.c
@@ -152,6 +152,34 @@ fc_instance_t* fontconfig_init(const char* dir, const char* family, const char*
return 0;
}
+ if (FcDirCacheValid((const FcChar8 *)dir) == FcFalse)
+ {
+ FcFontSet* fcs;
+ FcStrSet* fss;
+ mp_msg(MSGT_GLOBAL, MSGL_INFO, "[ass] Updating font cache\n");
+ fcs = FcFontSetCreate();
+ fss = FcStrSetCreate();
+ rc = FcStrSetAdd(fss, (const FcChar8*)dir);
+ if (!rc) {
+ mp_msg(MSGT_GLOBAL, MSGL_WARN, "FcStrSetAdd failed\n");
+ goto ErrorFontCache;
+ }
+
+ rc = FcDirScan(fcs, fss, NULL, FcConfigGetBlanks(priv->config), (const FcChar8 *)dir, FcFalse);
+ if (!rc) {
+ mp_msg(MSGT_GLOBAL, MSGL_WARN, "FcDirScan failed\n");
+ goto ErrorFontCache;
+ }
+
+ rc = FcDirSave(fcs, fss, (const FcChar8 *)dir);
+ if (!rc) {
+ mp_msg(MSGT_GLOBAL, MSGL_WARN, "FcDirSave failed\n");
+ goto ErrorFontCache;
+ }
+ ErrorFontCache:
+ ;
+ }
+
rc = FcConfigAppFontAddDir(priv->config, (const FcChar8*)dir);
if (!rc) {
mp_msg(MSGT_GLOBAL, MSGL_WARN, "FcConfigAppFontAddDir failed\n");