Bugfixes part 3 #209

Open
andrey wants to merge 36 commits from bugfixes3 into master
Showing only changes of commit 31ae52623d - Show all commits
+12 -10
View File
@@ -135,17 +135,19 @@ bool PIConditionVariable::waitFor(PIMutex & lk, PISystemTime timeout, std::funct
if (condition()) break; if (condition()) break;
bool isTimeout; bool isTimeout;
#if defined(WINDOWS) #if defined(WINDOWS)
isTimeout = SleepConditionVariableCS(&PRIVATE->nativeHandle, {
(PCRITICAL_SECTION)lk.handle(), int remain = (int)(timeout.toMilliseconds() - (int)measurer.elapsed_m());
timeout.toMilliseconds() - (int)measurer.elapsed_m()) == 0; if (remain <= 0) return false;
isTimeout = SleepConditionVariableCS(&PRIVATE->nativeHandle, (PCRITICAL_SECTION)lk.handle(), remain) == 0;
}
#elif defined(FREERTOS) #elif defined(FREERTOS)
EventBits_t uxBits; {
uxBits = xEventGroupWaitBits(PRIVATE->nativeHandle, int remain = (int)(timeout.toMilliseconds() - (int)measurer.elapsed_m());
1, if (remain <= 0) return false;
pdTRUE, EventBits_t uxBits;
pdTRUE, uxBits = xEventGroupWaitBits(PRIVATE->nativeHandle, 1, pdTRUE, pdTRUE, remain / portTICK_PERIOD_MS);
(timeout.toMilliseconds() - (int)measurer.elapsed_m()) / portTICK_PERIOD_MS); isTimeout = (uxBits & 1) == 0;
isTimeout = (uxBits & 1) == 0; }
#else #else
isTimeout = pthread_cond_timedwait(&PRIVATE->nativeHandle, (pthread_mutex_t *)lk.handle(), &expire_ts) != 0; isTimeout = pthread_cond_timedwait(&PRIVATE->nativeHandle, (pthread_mutex_t *)lk.handle(), &expire_ts) != 0;
#endif #endif