Global cache time checking was using wrong file name and computing wrong
count of fonts per file
This commit is contained in:
parent
89b61da31f
commit
a8386abc91
|
@ -309,14 +309,14 @@ FcCacheHash (const FcChar8 *string, int len)
|
||||||
* Verify the saved timestamp for a file
|
* Verify the saved timestamp for a file
|
||||||
*/
|
*/
|
||||||
FcBool
|
FcBool
|
||||||
FcGlobalCacheCheckTime (FcGlobalCacheInfo *info)
|
FcGlobalCacheCheckTime (const FcChar8 *file, FcGlobalCacheInfo *info)
|
||||||
{
|
{
|
||||||
struct stat statb;
|
struct stat statb;
|
||||||
|
|
||||||
if (stat ((char *) info->file, &statb) < 0)
|
if (stat ((char *) file, &statb) < 0)
|
||||||
{
|
{
|
||||||
if (FcDebug () & FC_DBG_CACHE)
|
if (FcDebug () & FC_DBG_CACHE)
|
||||||
printf (" file missing\n");
|
printf (" file %s missing\n", file);
|
||||||
return FcFalse;
|
return FcFalse;
|
||||||
}
|
}
|
||||||
if (statb.st_mtime != info->time)
|
if (statb.st_mtime != info->time)
|
||||||
|
@ -549,7 +549,7 @@ FcGlobalCacheScanDir (FcFontSet *set,
|
||||||
* See if the timestamp recorded in the global cache
|
* See if the timestamp recorded in the global cache
|
||||||
* matches the directory time, if not, return False
|
* matches the directory time, if not, return False
|
||||||
*/
|
*/
|
||||||
if (!FcGlobalCacheCheckTime (&d->info))
|
if (!FcGlobalCacheCheckTime (d->info.file, &d->info))
|
||||||
{
|
{
|
||||||
if (FcDebug () & FC_DBG_CACHE)
|
if (FcDebug () & FC_DBG_CACHE)
|
||||||
printf ("\tdir cache entry time mismatch\n");
|
printf ("\tdir cache entry time mismatch\n");
|
||||||
|
@ -633,7 +633,7 @@ FcGlobalCacheFileGet (FcGlobalCache *cache,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (count)
|
if (count)
|
||||||
*count = max;
|
*count = max + 1;
|
||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ FcFileScan (FcFontSet *set,
|
||||||
/*
|
/*
|
||||||
* Found a cache entry for the file
|
* Found a cache entry for the file
|
||||||
*/
|
*/
|
||||||
if (FcGlobalCacheCheckTime (&cache_file->info))
|
if (FcGlobalCacheCheckTime (file, &cache_file->info))
|
||||||
{
|
{
|
||||||
name = cache_file->name;
|
name = cache_file->name;
|
||||||
need_scan = FcFalse;
|
need_scan = FcFalse;
|
||||||
|
@ -89,7 +89,8 @@ FcFileScan (FcFontSet *set,
|
||||||
strlen ((const char *) file),
|
strlen ((const char *) file),
|
||||||
FcFalse)))
|
FcFalse)))
|
||||||
{
|
{
|
||||||
if (FcGlobalCacheCheckTime (&cache_dir->info))
|
if (FcGlobalCacheCheckTime (cache_dir->info.file,
|
||||||
|
&cache_dir->info))
|
||||||
{
|
{
|
||||||
font = 0;
|
font = 0;
|
||||||
need_scan = FcFalse;
|
need_scan = FcFalse;
|
||||||
|
@ -199,6 +200,9 @@ FcDirScan (FcFontSet *set,
|
||||||
strcat ((char *) file, "/");
|
strcat ((char *) file, "/");
|
||||||
base = file + strlen ((char *) file);
|
base = file + strlen ((char *) file);
|
||||||
|
|
||||||
|
if (FcDebug () & FC_DBG_SCAN)
|
||||||
|
printf ("\tScanning dir %s\n", dir);
|
||||||
|
|
||||||
d = opendir ((char *) dir);
|
d = opendir ((char *) dir);
|
||||||
|
|
||||||
if (!d)
|
if (!d)
|
||||||
|
|
|
@ -338,7 +338,7 @@ void
|
||||||
FcGlobalCacheDestroy (FcGlobalCache *cache);
|
FcGlobalCacheDestroy (FcGlobalCache *cache);
|
||||||
|
|
||||||
FcBool
|
FcBool
|
||||||
FcGlobalCacheCheckTime (FcGlobalCacheInfo *info);
|
FcGlobalCacheCheckTime (const FcChar8*file, FcGlobalCacheInfo *info);
|
||||||
|
|
||||||
void
|
void
|
||||||
FcGlobalCacheReferenced (FcGlobalCache *cache,
|
FcGlobalCacheReferenced (FcGlobalCache *cache,
|
||||||
|
|
Loading…
Reference in New Issue