corrected handling of timeouts in wxConditionInternal::WaitTimeout(): check for wxSEMA_TIMEOUT, not wxSEMA_BUSY; return wxCOND_TIMEOUT, not wxCOND_MISC_ERROR (bug 1387179)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -148,7 +148,7 @@ wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds)
|
|||||||
|
|
||||||
wxSemaError err = m_semaphore.WaitTimeout(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
|
// another potential race condition exists here it is caused when a
|
||||||
// 'waiting' thread timesout, and returns from WaitForSingleObject, but
|
// 'waiting' thread timesout, and returns from WaitForSingleObject, but
|
||||||
@@ -174,7 +174,9 @@ wxCondError wxConditionInternal::WaitTimeout(unsigned long milliseconds)
|
|||||||
|
|
||||||
m_mutex.Lock();
|
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()
|
wxCondError wxConditionInternal::Signal()
|
||||||
|
Reference in New Issue
Block a user