mirror of
https://github.com/dankamongmen/notcurses
synced 2025-03-10 09:39:03 -04:00
pthread_cond_timedwait() requires CLOCK_REALTIME :/
This commit is contained in:
parent
f8c870bb76
commit
38fb082c61
@ -19,8 +19,10 @@ char32_t demo_getc(const struct timespec* ts, ncinput* ni){
|
||||
struct timespec now;
|
||||
uint64_t ns;
|
||||
struct timespec abstime;
|
||||
// yes, i'd like CLOCK_MONOTONIC too, but pthread_cond_timedwait() is based off
|
||||
// of crappy CLOCK_REALTIME :/
|
||||
if(ts){
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
clock_gettime(CLOCK_REALTIME, &now);
|
||||
ns = timespec_to_ns(&now) + timespec_to_ns(ts);
|
||||
ns_to_timespec(ns, &abstime);
|
||||
}else{
|
||||
@ -29,7 +31,7 @@ char32_t demo_getc(const struct timespec* ts, ncinput* ni){
|
||||
}
|
||||
pthread_mutex_lock(&lock);
|
||||
while(!queue){
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
clock_gettime(CLOCK_REALTIME, &now);
|
||||
if(timespec_to_ns(&now) > timespec_to_ns(&abstime)){
|
||||
pthread_mutex_unlock(&lock);
|
||||
return 0;
|
||||
@ -52,11 +54,14 @@ char32_t demo_getc(const struct timespec* ts, ncinput* ni){
|
||||
|
||||
static int
|
||||
pass_along(const ncinput* ni){
|
||||
pthread_mutex_lock(&lock);
|
||||
nciqueue *nq = malloc(sizeof(*nq));
|
||||
memcpy(&nq->ni, ni, sizeof(*ni));
|
||||
nq->next = NULL;
|
||||
*enqueue = nq;
|
||||
enqueue = &nq->next;
|
||||
pthread_mutex_unlock(&lock);
|
||||
pthread_cond_signal(&cond);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user