]> git.lyx.org Git - lyx.git/blobdiff - src/ConverterCache.cpp
Provide proper fallback if a bibliography processor is not found
[lyx.git] / src / ConverterCache.cpp
index 40390bca8e175aedb680177eaf95965f7a0a8205..2373b84d2fb06f2fe1ea6ef781aac02fbdef97bc 100644 (file)
@@ -49,13 +49,14 @@ unsigned long do_crc(string const & s)
 }
 
 
+// FIXME THREAD
+// This should be OK because it is only assigned during init()
 static FileName cache_dir;
 
 
 class CacheItem {
 public:
-       CacheItem()
-       {}
+       CacheItem() : timestamp(0), checksum(0) {}
        CacheItem(FileName const & orig_from, string const & to_format,
                  time_t t, unsigned long c)
                : timestamp(t), checksum(c)
@@ -75,7 +76,7 @@ public:
        unsigned long checksum;
 };
 
-}
+} // namespace
 
 
 /** The cache contains one item per orig file and target format, so use a
@@ -158,7 +159,11 @@ void ConverterCache::Impl::readIndex()
                FormatCache & format_cache = cache[orig_from_name];
                if (format_cache.from_format.empty())
                        format_cache.from_format =
-                               formats.getFormatFromFile(orig_from_name);
+                               // FIXME perf: This very expensive function is called on all
+                               // cached files on opening. This slows LyX startup a lot. It
+                               // would be better if this information was retrieved in a
+                               // delayed fashion.
+                               theFormats().getFormatFromFile(orig_from_name);
                format_cache.cache[to_format] = item;
        }
        is.close();
@@ -249,7 +254,7 @@ void ConverterCache::init()
 
 void ConverterCache::writeIndex() const
 {
-       if (!lyxrc.use_converter_cache 
+       if (!lyxrc.use_converter_cache
                  || cache_dir.empty())
                return;
        pimpl_->writeIndex();
@@ -315,7 +320,7 @@ void ConverterCache::add(FileName const & orig_from, string const & to_format,
                        FormatCache & format_cache = pimpl_->cache[orig_from];
                        if (format_cache.from_format.empty())
                                format_cache.from_format =
-                                       formats.getFormatFromFile(orig_from);
+                                       theFormats().getFormatFromFile(orig_from);
                        format_cache.cache[to_format] = new_item;
                } else
                        LYXERR(Debug::FILES, "ConverterCache::add(" << orig_from << "):\n"