]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/PreviewLoader.cpp
Use only one file for dummy implementations
[lyx.git] / src / graphics / PreviewLoader.cpp
index 1240771982e78f86a47007e863e6bd19332b238e..e9b1d47202c2a4a4288a6f97227eeeddce48c66d 100644 (file)
@@ -45,6 +45,7 @@
 #include <fstream>
 #include <iomanip>
 #include <memory>
+#include <mutex>
 #include <sstream>
 
 #include <QTimer>
@@ -91,13 +92,23 @@ lyx::Converter const * setConverter(string const & from)
                        return ptr;
        }
 
-       // FIXME THREAD
-       static bool first = true;
-       if (first) {
-               first = false;
-               LYXERR0("PreviewLoader::startLoading()\n"
-                       << "No converter from \"" << from << "\" format has been defined.");
-       }
+       // Show the error only once
+#ifdef LYX_USE_STD_CALL_ONCE
+       // This is thread-safe.
+       static once_flag flag;
+       call_once(flag, [&](){
+                       LYXERR0("PreviewLoader::startLoading()\n"
+                               << "No converter from \"" << from
+                               << "\" format has been defined.");
+               });
+#else
+       // This is also thread-safe according to ยง6.7.4 of the C++11 standard.
+       static bool once = ([&]{
+                       LYXERR0("PreviewLoader::startLoading()\n"
+                               << "No converter from \"" << from
+                               << "\" format has been defined.");
+               } (), true);
+#endif
        return 0;
 }