thread rename for ios and osx (if called from the thread to be renamed)

This commit is contained in:
Ariel Manzur 2015-12-18 02:58:30 -03:00
parent 19267f30d9
commit 4a7e5fafb1
3 changed files with 20 additions and 1 deletions

View file

@ -45,8 +45,8 @@ Thread* ThreadPosix::create_thread_posix() {
void *ThreadPosix::thread_callback(void *userdata) {
ThreadPosix *t=reinterpret_cast<ThreadPosix*>(userdata);
t->callback(t->user);
t->id=(ID)pthread_self();
t->callback(t->user);
return NULL;
}
@ -81,8 +81,24 @@ Error ThreadPosix::set_name(const String& p_name) {
ERR_FAIL_COND_V(pthread == 0, ERR_UNCONFIGURED);
#ifdef PTHREAD_RENAME_SELF
// check if thread is the same as caller
int caller = Thread::get_caller_ID();
int self = get_ID();
if (caller != self) {
ERR_EXPLAIN("On this platform, thread can only be renamed with calls from the threads to be renamed.");
ERR_FAIL_V(ERR_UNAVAILABLE);
return ERR_UNAVAILABLE;
};
int err = pthread_setname_np(p_name.utf8().get_data());
#else
int err = pthread_setname_np(pthread, p_name.utf8().get_data());
#endif
return err == 0 ? OK : ERR_INVALID_PARAMETER;
};

View file

@ -31,3 +31,5 @@
#define PLATFORM_REFCOUNT
#define PTHREAD_RENAME_SELF

View file

@ -29,3 +29,4 @@
#include <alloca.h>
#define GLES2_INCLUDE_H "gl_context/glew.h"
#define GLES1_INCLUDE_H "gl_context/glew.h"
#define PTHREAD_RENAME_SELF