wxSemaError err = m_semaphore.Wait();
m_mutex.Lock();
- return err == wxSEMA_NO_ERROR ? wxCOND_NO_ERROR : wxCOND_MISC_ERROR;
+ if ( err == wxSEMA_NO_ERROR )
+ return wxCOND_NO_ERROR;
+ else if ( err == wxSEMA_TIMEOUT )
+ return wxCOND_TIMEOUT;
+ else
+ return wxCOND_MISC_ERROR;
}
wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds)
wxSemaError err = m_semaphore.WaitTimeout(milliseconds);
- if ( err == wxSEMA_BUSY )
+ if ( err == wxSEMA_TIMEOUT )
{
// another potential race condition exists here it is caused when a
// 'waiting' thread timesout, and returns from WaitForSingleObject, but
m_mutex.Lock();
- return err == wxSEMA_NO_ERROR ? wxCOND_NO_ERROR : wxCOND_MISC_ERROR;
+ return err == wxSEMA_NO_ERROR ? wxCOND_NO_ERROR
+ : err == wxSEMA_TIMEOUT ? wxCOND_TIMEOUT
+ : wxCOND_MISC_ERROR;
}
wxCondError wxConditionInternal::Signal()