mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	Workarounds and documentation of OSX posix incompatibilities
This commit is contained in:
		
							parent
							
								
									723406dfea
								
							
						
					
					
						commit
						d8f45ff1d8
					
				
					 3 changed files with 9 additions and 2 deletions
				
			
		|  | @ -213,8 +213,11 @@ std::string AppConfig::load() | |||
| 
 | ||||
| void AppConfig::save() | ||||
| { | ||||
| #ifndef __APPLE__ | ||||
|     // Apple does not implement thread_getname_np() correctly.
 | ||||
|     if (get_current_thread_name() != "slic3r_main") | ||||
|         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
 | ||||
|     // 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() | ||||
| { | ||||
| 	char buf[16]; | ||||
| 	return std::string(thread_getname_np(buf, 16) == 0 ? buf : ""); | ||||
| // not supported	
 | ||||
| //	char buf[16];
 | ||||
| //	return std::string(thread_getname_np(buf, 16) == 0 ? buf : "");
 | ||||
| 	throw CriticalException("Not supported"); | ||||
| } | ||||
| 
 | ||||
| #else | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ namespace Slic3r { | |||
| 
 | ||||
| // Set / get thread name.
 | ||||
| // 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); | ||||
| 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); | ||||
|  | @ -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); | ||||
| 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(); | ||||
| 
 | ||||
| // To be called somewhere before the TBB threads are spinned for the first time, to
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik