Browse Source

compat/w32pthreads: add return value to pthread_cond_init().

tags/n2.3
Nicolas George 11 years ago
parent
commit
58a10e0e2c
1 changed files with 6 additions and 5 deletions
  1. +6
    -5
      compat/w32pthreads.h

+ 6
- 5
compat/w32pthreads.h View File

@@ -134,28 +134,29 @@ typedef struct win32_cond_t {
volatile int is_broadcast; volatile int is_broadcast;
} win32_cond_t; } win32_cond_t;


static void pthread_cond_init(pthread_cond_t *cond, const void *unused_attr)
static int pthread_cond_init(pthread_cond_t *cond, const void *unused_attr)
{ {
win32_cond_t *win32_cond = NULL; win32_cond_t *win32_cond = NULL;
if (cond_init) { if (cond_init) {
cond_init(cond); cond_init(cond);
return;
return 0;
} }


/* non native condition variables */ /* non native condition variables */
win32_cond = av_mallocz(sizeof(win32_cond_t)); win32_cond = av_mallocz(sizeof(win32_cond_t));
if (!win32_cond) if (!win32_cond)
return;
return ENOMEM;
cond->ptr = win32_cond; cond->ptr = win32_cond;
win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL); win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL);
if (!win32_cond->semaphore) if (!win32_cond->semaphore)
return;
return ENOMEM;
win32_cond->waiters_done = CreateEvent(NULL, TRUE, FALSE, NULL); win32_cond->waiters_done = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!win32_cond->waiters_done) if (!win32_cond->waiters_done)
return;
return ENOMEM;


pthread_mutex_init(&win32_cond->mtx_waiter_count, NULL); pthread_mutex_init(&win32_cond->mtx_waiter_count, NULL);
pthread_mutex_init(&win32_cond->mtx_broadcast, NULL); pthread_mutex_init(&win32_cond->mtx_broadcast, NULL);
return 0;
} }


static void pthread_cond_destroy(pthread_cond_t *cond) static void pthread_cond_destroy(pthread_cond_t *cond)


Loading…
Cancel
Save