X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef8d96c29c73b9da8cdaa2b8b4737862c85ccc20..0bd55cfa2c5c18d4e9241cf90195e30d0be5d905:/src/unix/threadpsx.cpp diff --git a/src/unix/threadpsx.cpp b/src/unix/threadpsx.cpp index 34f3cd81b4..b30021a122 100644 --- a/src/unix/threadpsx.cpp +++ b/src/unix/threadpsx.cpp @@ -135,7 +135,7 @@ static pthread_key_t gs_keySelf; static size_t gs_nThreadsBeingDeleted = 0; // a mutex to protect gs_nThreadsBeingDeleted -static pthread_mutex_t gs_mutexDeleteThread = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t gs_mutexDeleteThread; // and a condition variable which will be signaled when all // gs_nThreadsBeingDeleted will have been deleted @@ -725,7 +725,7 @@ void wxThreadInternal::Wait() wxMutexGuiLeave(); bool isDetached = m_isDetached; - long id = GetId(); + long id = (long)GetId(); wxLogTrace(TRACE_THREADS, _T("Starting to wait for thread %ld to exit."), id); @@ -749,7 +749,7 @@ void wxThreadInternal::Wait() // we're cancelled inside pthread_join(), things will almost // certainly break - but if we disable the cancellation, we // might deadlock - if ( pthread_join(id, &m_exitcode) != 0 ) + if ( pthread_join((pthread_t)id, &m_exitcode) != 0 ) { wxLogError(_("Failed to join a thread, potential memory leak " "detected - please restart the program")); @@ -933,8 +933,18 @@ wxThreadError wxThread::Create() wxLogError(_("Cannot retrieve thread scheduling policy.")); } - int min_prio = sched_get_priority_min(policy), - max_prio = sched_get_priority_max(policy), +#ifdef __VMS__ + /* the pthread.h contains too many spaces. This is a work-around */ +# undef sched_get_priority_max +#undef sched_get_priority_min +#define sched_get_priority_max(_pol_) \ + (_pol_ == SCHED_OTHER ? PRI_FG_MAX_NP : PRI_FIFO_MAX) +#define sched_get_priority_min(_pol_) \ + (_pol_ == SCHED_OTHER ? PRI_FG_MIN_NP : PRI_FIFO_MIN) +#endif + + int max_prio = sched_get_priority_max(policy), + min_prio = sched_get_priority_min(policy), prio = m_internal->GetPriority(); if ( min_prio == -1 || max_prio == -1 ) @@ -1439,6 +1449,10 @@ bool wxThreadModule::OnInit() gs_mutexGui->Lock(); #endif // wxUSE_GUI + // under Solaris we get a warning from CC when using + // PTHREAD_MUTEX_INITIALIZER, so do it dynamically + pthread_mutex_init(&gs_mutexDeleteThread, NULL); + return TRUE; }