Browse Source

PresetUpdater: Use PID in cache tmp filenames

Vojtech Kral 6 years ago
parent
commit
9b5480b7ba
3 changed files with 22 additions and 3 deletions
  1. 3 0
      xs/src/libslic3r/Utils.hpp
  2. 15 0
      xs/src/libslic3r/utils.cpp
  3. 4 3
      xs/src/slic3r/Utils/PresetUpdater.cpp

+ 3 - 0
xs/src/libslic3r/Utils.hpp

@@ -62,6 +62,9 @@ extern std::string timestamp_str();
 // to be placed at the top of Slic3r generated files.
 inline std::string header_slic3r_generated() { return std::string("generated by " SLIC3R_FORK_NAME " " SLIC3R_VERSION " " ) + timestamp_str(); }
 
+// getpid platform wrapper
+extern unsigned get_current_pid();
+
 // Compute the next highest power of 2 of 32-bit v
 // http://graphics.stanford.edu/~seander/bithacks.html
 template<typename T>

+ 15 - 0
xs/src/libslic3r/utils.cpp

@@ -1,6 +1,12 @@
 #include <locale>
 #include <ctime>
 
+#ifdef WIN32
+#include <windows.h>
+#else
+#include <unistd.h>
+#endif
+
 #include <boost/log/core.hpp>
 #include <boost/log/trivial.hpp>
 #include <boost/log/expressions.hpp>
@@ -271,4 +277,13 @@ std::string timestamp_str()
     return buf;
 }
 
+unsigned get_current_pid()
+{
+#ifdef WIN32
+    return GetCurrentProcessId();
+#else
+    return ::getpid();
+#endif
+}
+
 }; // namespace Slic3r

+ 4 - 3
xs/src/slic3r/Utils/PresetUpdater.cpp

@@ -180,11 +180,12 @@ void PresetUpdater::priv::set_download_prefs(AppConfig *app_config)
 
 bool PresetUpdater::priv::get_file(const std::string &url, const fs::path &target_path) const
 {
-	std::cerr << "get_file(): " << url << " -> " << target_path << std::endl;
-
 	bool res = false;
 	fs::path tmp_path = target_path;
-	tmp_path += TMP_EXTENSION;
+	tmp_path += (boost::format(".%1%%2%") % get_current_pid() % TMP_EXTENSION).str();
+
+	std::cerr << "get_file(): " << url << " -> " << target_path << std::endl
+		<< "\ttmp_path: " << tmp_path << std::endl;
 
 	Http::get(url)
 		.on_progress([this](Http::Progress, bool &cancel) {