On Tue, 2005-10-04 at 20:42 -0400, Patrick Lam wrote: > Matthias Clasen wrote: > >>Oops, you're right. How about this: when we find that the cache is > >>invalidated on any platform, we remove all stale sections from other > >>platforms. That ought to be sufficient to avoid staleness (safety). Of > >>course, an update to a file which is not stale preserves existing > >>sections (liveness). With this solution, in order to fully update cache > >>files, you'll have to run fc-cache on all relevant platforms once, which > >>is the best we can do (without cross-platform cache creation) anyway. > > > > Sounds like it should work well enough (since fonts are not installed > > with high frequency...) > > I just committed a patch which unlinks the file if it's stale; if it's > not stale but just lacking a section, then it adds the section to the > cache. So I reverted the patch to FcDirCacheValid and added > FcDirCacheHasCurrentArch. > > So, if FcDirCacheValid && FcDirCacheHasCurrentArch, then skip. > > Otherwise, !FcDirCacheValid || !FcDirCacheHasCurrentArch. If > !FcDirCacheValid (ie stale), then unlink. In all cases, continue by > saving the cache. I think you need to copy the other architectures into the new file and unlink the old one; there's no other way to avoid destroying existing running applications images of the cache file. Oh, would resetting the mod time on the cache file be useful in avoiding thrashing among multiple architectures? By checking whether the existing timestamp was "new enough", and re-using that value for the new file, we would then just always use the cache file timestamp itself. -keith -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part Url : http://lists.freedesktop.org/archives/fontconfig/attachments/20051004/9c934bea/attachment.pgp