diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-08-06 17:56:01 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-08-06 17:56:01 +0000 |
commit | 5415ba27e4a881061869c2a3d8a3be98e2884442 (patch) | |
tree | 2058b77dff32ada797622a4256fe78f9917bb677 | |
parent | b3bcb0fddf934393b337084aceed51746953e9c8 (diff) |
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
-rw-r--r-- | libass/ass_fontconfig.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c index f3e6fdf0b1..9c0b84fb87 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"); |