X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcondvar.c;h=63c1380c5fe55414e80658e9160a797ff0885d96;hp=5bbd92a3a39a96550326edecb9fa56a1e421340e;hb=b111819a3d4c8dea01efe2c12ef21689ea0c21ed;hpb=df00da5a3dbba000c75781fbb709e3e1cfb0a927 diff --git a/src/condvar.c b/src/condvar.c index 5bbd92a..63c1380 100644 --- a/src/condvar.c +++ b/src/condvar.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ @@ -48,11 +48,14 @@ struct yaz_cond { void yaz_cond_create(YAZ_COND *p) { - *p = (YAZ_COND) malloc(sizeof(**p)); #ifdef WIN32 + *p = (YAZ_COND) malloc(sizeof(**p)); InitializeConditionVariable(&(*p)->cond); #elif YAZ_POSIX_THREADS + *p = (YAZ_COND) malloc(sizeof(**p)); pthread_cond_init(&(*p)->cond, 0); +#else + *p = 0; #endif } @@ -72,6 +75,7 @@ void yaz_cond_destroy(YAZ_COND *p) int yaz_cond_wait(YAZ_COND p, YAZ_MUTEX m, const struct timeval *abstime) { #ifdef WIN32 + BOOL v; if (abstime) { struct timeval tval_now; @@ -81,10 +85,11 @@ int yaz_cond_wait(YAZ_COND p, YAZ_MUTEX m, const struct timeval *abstime) sec = abstime->tv_sec - tval_now.tv_sec; msec = (abstime->tv_usec - tval_now.tv_usec) / 1000; - return SleepConditionVariableCS(&p->cond, &m->handle, sec*1000 + msec); + v = SleepConditionVariableCS(&p->cond, &m->handle, sec*1000 + msec); } else - return SleepConditionVariableCS(&p->cond, &m->handle, INFINITE); + v = SleepConditionVariableCS(&p->cond, &m->handle, INFINITE); + return v ? 0 : -1; #elif YAZ_POSIX_THREADS if (abstime) {