Global cache time checking was using wrong file name and computing wrong

count of fonts per file
This commit is contained in:
Keith Packard 2003-03-12 22:15:39 +00:00
parent 89b61da31f
commit a8386abc91
3 changed files with 12 additions and 8 deletions

View File

@ -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;
} }

View File

@ -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)

View File

@ -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,