X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fpbd%2Fpthread_utils.h;h=ee78819d59d968a47070d7dcb4c3de6528233068;hb=8d0ec2403f3444e3a53d16b21f2f8557abd71b55;hp=0c7b5f3ac142b458b68456dacdde73cb15205956;hpb=04bf9d1e9594688db4a69c3660feef2efe23945b;p=ardour.git diff --git a/libs/pbd/pbd/pthread_utils.h b/libs/pbd/pbd/pthread_utils.h index 0c7b5f3ac1..ee78819d59 100644 --- a/libs/pbd/pbd/pthread_utils.h +++ b/libs/pbd/pbd/pthread_utils.h @@ -20,23 +20,43 @@ #ifndef __pbd_pthread_utils__ #define __pbd_pthread_utils__ +/* Accommodate thread setting (and testing) for both + * 'libpthread' and 'libpthread_win32' (whose implementations + * of 'pthread_t' are subtlely different) + */ +#ifndef PTHREAD_MACROS_DEFINED +#define PTHREAD_MACROS_DEFINED +#ifdef PTW32_VERSION /* pthread_win32 */ +#define mark_pthread_inactive(threadID) threadID.p=0 +#define is_pthread_active(threadID) threadID.p==0 +#else /* normal pthread */ +#define mark_pthread_inactive(threadID) threadID=0 +#define is_pthread_active(threadID) threadID==0 +#endif /* PTW32_VERSION */ +#endif /* PTHREAD_MACROS_DEFINED */ + +#ifdef COMPILER_MSVC +#include +#else #include +#endif #include #include #include -#include +#include "pbd/libpbd_visibility.h" +#include "pbd/signals.h" -int pthread_create_and_store (std::string name, pthread_t *thread, void * (*start_routine)(void *), void * arg); -void pthread_cancel_one (pthread_t thread); -void pthread_cancel_all (); -void pthread_kill_all (int signum); -const char* pthread_name (); -void pthread_set_name (const char* name); +LIBPBD_API int pthread_create_and_store (std::string name, pthread_t *thread, void * (*start_routine)(void *), void * arg); +LIBPBD_API void pthread_cancel_one (pthread_t thread); +LIBPBD_API void pthread_cancel_all (); +LIBPBD_API void pthread_kill_all (int signum); +LIBPBD_API const char* pthread_name (); +LIBPBD_API void pthread_set_name (const char* name); namespace PBD { - extern void notify_gui_about_thread_creation (std::string, pthread_t, std::string, int requests = 256); - extern PBD::Signal4 ThreadCreatedWithRequestSize; + LIBPBD_API extern void notify_gui_about_thread_creation (std::string, pthread_t, std::string, int requests = 256); + LIBPBD_API extern PBD::Signal4 ThreadCreatedWithRequestSize; } #endif /* __pbd_pthread_utils__ */