diff --git a/include/bx/sem.h b/include/bx/sem.h index 785bff3..7656494 100644 --- a/include/bx/sem.h +++ b/include/bx/sem.h @@ -83,14 +83,35 @@ namespace bx int result = pthread_mutex_lock(&m_mutex); BX_CHECK(0 == result, "pthread_mutex_lock %d", result); -# if BX_PLATFORM_NACL || BX_PLATFORM_OSX || BX_PLATFORM_IOS +# if BX_PLATFORM_NACL || BX_PLATFORM_OSX BX_UNUSED(_msecs); - BX_CHECK(-1 == _msecs, "NaCl, iOS and OSX don't support pthread_cond_timedwait at this moment."); + BX_CHECK(-1 == _msecs, "NaCl and OSX don't support pthread_cond_timedwait at this moment."); while (0 == result - && 0 >= m_count) + && 0 >= m_count) { result = pthread_cond_wait(&m_cond, &m_mutex); } +# elif BX_PLATFORM_IOS + if (-1 == _msecs) + { + while (0 == result + && 0 >= m_count) + { + result = pthread_cond_wait(&m_cond, &m_mutex); + } + } + else + { + timespec ts; + ts.tv_sec = _msecs/1000; + ts.tv_nsec = (_msecs%1000)*1000; + + while (0 == result + && 0 >= m_count) + { + result = pthread_cond_timedwait_relative_np(&m_cond, &m_mutex, &ts); + } + } # else timespec ts; clock_gettime(CLOCK_REALTIME, &ts);