- /* no job and not events */
- waiting++;
- me->waits = 1;
- pthread_cond_wait(&cond, &mutex);
- me->waits = 0;
- waiting--;
+ /* no owned event, check events */
+ events = events_get();
+ if (events) {
+ /* run the events */
+ events->used = 1;
+ events->runs = 1;
+ events->timeout = evto;
+ me->events = events;
+ pthread_mutex_unlock(&mutex);
+ sig_monitor(0, events_call, events);
+ pthread_mutex_lock(&mutex);
+ events->used = 0;
+ events->runs = 0;
+ me->events = NULL;
+ } else {
+ /* no job and not events */
+ waiting++;
+ me->waits = 1;
+ pthread_cond_wait(&cond, &mutex);
+ me->waits = 0;
+ waiting--;
+ }