hidapi: syncing with mainstream:

- macos, pthread_barrier_wait: properly check the wait condition
- windows: Assert that struct has the correct size
- windows: Fix printf/string-related issues
- other miscellaneous stuff irrelevant in SDL. (for symmetry...)
This commit is contained in:
Ozkan Sezer
2023-11-23 11:35:02 +03:00
parent 5730eb67f0
commit aaba01aee4
8 changed files with 165 additions and 151 deletions

View File

@@ -54,15 +54,15 @@ static int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrie
{
(void) attr;
if(count == 0) {
if (count == 0) {
errno = EINVAL;
return -1;
}
if(pthread_mutex_init(&barrier->mutex, 0) < 0) {
if (pthread_mutex_init(&barrier->mutex, 0) < 0) {
return -1;
}
if(pthread_cond_init(&barrier->cond, 0) < 0) {
if (pthread_cond_init(&barrier->cond, 0) < 0) {
pthread_mutex_destroy(&barrier->mutex);
return -1;
}
@@ -83,16 +83,18 @@ static int pthread_barrier_wait(pthread_barrier_t *barrier)
{
pthread_mutex_lock(&barrier->mutex);
++(barrier->count);
if(barrier->count >= barrier->trip_count)
{
if (barrier->count >= barrier->trip_count) {
barrier->count = 0;
pthread_cond_broadcast(&barrier->cond);
pthread_mutex_unlock(&barrier->mutex);
pthread_cond_broadcast(&barrier->cond);
return 1;
}
else
{
pthread_cond_wait(&barrier->cond, &(barrier->mutex));
else {
do {
pthread_cond_wait(&barrier->cond, &(barrier->mutex));
}
while (barrier->count != 0);
pthread_mutex_unlock(&barrier->mutex);
return 0;
}