Workarounds and documentation of OSX posix incompatibilities
This commit is contained in:
parent
723406dfea
commit
d8f45ff1d8
@ -213,8 +213,11 @@ std::string AppConfig::load()
|
|||||||
|
|
||||||
void AppConfig::save()
|
void AppConfig::save()
|
||||||
{
|
{
|
||||||
|
#ifndef __APPLE__
|
||||||
|
// Apple does not implement thread_getname_np() correctly.
|
||||||
if (get_current_thread_name() != "slic3r_main")
|
if (get_current_thread_name() != "slic3r_main")
|
||||||
throw CriticalException("Calling AppConfig::save() from a worker thread!");
|
throw CriticalException("Calling AppConfig::save() from a worker thread!");
|
||||||
|
#endif
|
||||||
|
|
||||||
// The config is first written to a file with a PID suffix and then moved
|
// The config is first written to a file with a PID suffix and then moved
|
||||||
// to avoid race conditions with multiple instances of Slic3r
|
// to avoid race conditions with multiple instances of Slic3r
|
||||||
|
@ -116,8 +116,10 @@ void set_current_thread_name(const char *thread_name)
|
|||||||
|
|
||||||
std::string get_current_thread_name()
|
std::string get_current_thread_name()
|
||||||
{
|
{
|
||||||
char buf[16];
|
// not supported
|
||||||
return std::string(thread_getname_np(buf, 16) == 0 ? buf : "");
|
// char buf[16];
|
||||||
|
// return std::string(thread_getname_np(buf, 16) == 0 ? buf : "");
|
||||||
|
throw CriticalException("Not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -10,6 +10,7 @@ namespace Slic3r {
|
|||||||
|
|
||||||
// Set / get thread name.
|
// Set / get thread name.
|
||||||
// pthread_setname_np supports maximum 15 character thread names! (16th character is the null terminator)
|
// pthread_setname_np supports maximum 15 character thread names! (16th character is the null terminator)
|
||||||
|
// Methods taking the thread as an argument are not supported by OSX.
|
||||||
void set_thread_name(std::thread &thread, const char *thread_name);
|
void set_thread_name(std::thread &thread, const char *thread_name);
|
||||||
inline void set_thread_name(std::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); }
|
inline void set_thread_name(std::thread &thread, const std::string &thread_name) { set_thread_name(thread, thread_name.c_str()); }
|
||||||
void set_thread_name(boost::thread &thread, const char *thread_name);
|
void set_thread_name(boost::thread &thread, const char *thread_name);
|
||||||
@ -17,6 +18,7 @@ inline void set_thread_name(boost::thread &thread, const std::string &thread_nam
|
|||||||
void set_current_thread_name(const char *thread_name);
|
void set_current_thread_name(const char *thread_name);
|
||||||
inline void set_current_thread_name(const std::string &thread_name) { set_current_thread_name(thread_name.c_str()); }
|
inline void set_current_thread_name(const std::string &thread_name) { set_current_thread_name(thread_name.c_str()); }
|
||||||
|
|
||||||
|
// Not supported by OSX.
|
||||||
std::string get_current_thread_name();
|
std::string get_current_thread_name();
|
||||||
|
|
||||||
// To be called somewhere before the TBB threads are spinned for the first time, to
|
// To be called somewhere before the TBB threads are spinned for the first time, to
|
||||||
|
Loading…
Reference in New Issue
Block a user