#include <fstream>
#include <iomanip>
#include <memory>
+#include <mutex>
#include <sstream>
#include <QTimer>
}
-lyx::Converter const * setConverter(string const & from)
-{
- typedef vector<string> FmtList;
- typedef lyx::graphics::Cache GCache;
- FmtList const & loadableFormats = GCache::get().loadableFormats();
- FmtList::const_iterator it = loadableFormats.begin();
- FmtList::const_iterator const end = loadableFormats.end();
-
- for (; it != end; ++it) {
- string const to = *it;
- if (from == to)
- continue;
-
- lyx::Converter const * ptr = lyx::theConverters().getConverter(from, to);
- if (ptr)
- return ptr;
- }
-
- // FIXME THREAD
- static bool first = true;
- if (first) {
- first = false;
- LYXERR0("PreviewLoader::startLoading()\n"
- << "No converter from \"" << from << "\" format has been defined.");
- }
- return 0;
-}
-
-
void setAscentFractions(vector<double> & ascent_fractions,
FileName const & metrics_file)
{
Buffer const & buffer() const { return buffer_; }
+ lyx::Converter const * setConverter(string const & from);
+
private:
/// Called by the ForkedCall process that generated the bitmap files.
void finishedGenerating(pid_t, int);
}
+lyx::Converter const * PreviewLoader::Impl::setConverter(string const & from)
+{
+ typedef vector<string> FmtList;
+ FmtList const & loadableFormats = graphics::Cache::get().loadableFormats();
+ FmtList::const_iterator it = loadableFormats.begin();
+ FmtList::const_iterator const end = loadableFormats.end();
+
+ for (; it != end; ++it) {
+ string const to = *it;
+ if (from == to)
+ continue;
+
+ lyx::Converter const * ptr = lyx::theConverters().getConverter(from, to);
+ if (ptr)
+ return ptr;
+ }
+
+ // Show the error only once. This is thread-safe.
+ static nullptr_t no_conv = [&]{
+ LYXERR0("PreviewLoader::startLoading()\n"
+ << "No converter from \"" << from
+ << "\" format has been defined.");
+ return nullptr;
+ } ();
+
+ return no_conv;
+}
+
+
PreviewLoader::Impl::~Impl()
{
delete delay_refresh_;
}
cs << latexparam;
- if (buffer_.params().bibtex_command != "default")
- cs << " --bibtex=" << quoteName(buffer_.params().bibtex_command);
- else if (buffer_.params().encoding().package() == Encoding::japanese)
- cs << " --bibtex=" << quoteName(lyxrc.jbibtex_command);
- else
- cs << " --bibtex=" << quoteName(lyxrc.bibtex_command);
+ cs << " --bibtex=" << quoteName(buffer_.params().bibtexCommand());
if (buffer_.params().bufferFormat() == "lilypond-book")
cs << " --lilypond";