wxMutex::~wxMutex()
{
if (m_locked > 0)
- wxLogDebug("Warning: freeing a locked mutex (%d locks).", m_locked);
+ wxLogDebug(_T("Warning: freeing a locked mutex (%d locks)."), m_locked);
CloseHandle(p_internal->p_mutex);
}
case WAIT_TIMEOUT:
default:
- wxFAIL_MSG("impossible return value in wxMutex::Lock");
+ wxFAIL_MSG(_T("impossible return value in wxMutex::Lock"));
}
m_locked++;
wxCriticalSection::wxCriticalSection()
{
- m_critsect = NULL;
+ m_critsect = new wxCriticalSectionInternal;
}
wxCriticalSection::~wxCriticalSection()
{
- if ( m_critsect )
- delete m_critsect;
+ delete m_critsect;
}
void wxCriticalSection::Enter()
{
- m_critsect = new wxCriticalSectionInternal;
-
::EnterCriticalSection(*m_critsect);
}
void wxCriticalSection::Leave()
{
- wxCHECK_RET( m_critsect, "Leave() without matching Enter()" );
-
::LeaveCriticalSection(*m_critsect);
}
win_priority = THREAD_PRIORITY_HIGHEST;
else
{
- wxFAIL_MSG("invalid value of thread priority parameter");
+ wxFAIL_MSG(_T("invalid value of thread priority parameter"));
win_priority = THREAD_PRIORITY_NORMAL;
}
return ::GetCurrentThreadId() == s_idMainThread;
}
+#ifdef Yield
+ #undef Yield
+#endif
+
void wxThread::Yield()
{
// 0 argument to Sleep() is special
break;
default:
- wxFAIL_MSG("unexpected result of MsgWaitForMultipleObject");
+ wxFAIL_MSG(_T("unexpected result of MsgWaitForMultipleObject"));
}
} while ( result != WAIT_OBJECT_0 );
}
wxASSERT_MSG( (LPVOID)rc != (LPVOID)STILL_ACTIVE,
- "thread must be already terminated." );
+ _T("thread must be already terminated.") );
::CloseHandle(hThread);
}
::ExitThread((DWORD)status);
- wxFAIL_MSG("Couldn't return from ExitThread()!");
+ wxFAIL_MSG(_T("Couldn't return from ExitThread()!"));
}
void wxThread::SetPriority(unsigned int prio)
(p_internal->GetState() == STATE_PAUSED);
}
+bool wxThread::IsPaused() const
+{
+ wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect);
+
+ return (p_internal->GetState() == STATE_PAUSED);
+}
+
bool wxThread::TestDestroy()
{
wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect);
{
// this would dead lock everything...
wxASSERT_MSG( !wxThread::IsMain(),
- "main thread doesn't want to block in wxMutexGuiEnter()!" );
+ _T("main thread doesn't want to block in wxMutexGuiEnter()!") );
// the order in which we enter the critical sections here is crucial!!
{
// decrement the number of waiters now
wxASSERT_MSG( s_nWaitingForGui > 0,
- "calling wxMutexGuiLeave() without entering it first?" );
+ _T("calling wxMutexGuiLeave() without entering it first?") );
s_nWaitingForGui--;
void WXDLLEXPORT wxMutexGuiLeaveOrEnter()
{
wxASSERT_MSG( wxThread::IsMain(),
- "only main thread may call wxMutexGuiLeaveOrEnter()!" );
+ _T("only main thread may call wxMutexGuiLeaveOrEnter()!") );
wxCriticalSectionLocker enter(*s_critsectWaitingForGui);