From: Jaroslav Kysela Date: Tue, 24 Nov 2015 19:12:10 +0000 (+0100) Subject: epggrab: recode previous commit using pthread_cond_timedwait X-Git-Tag: v4.2.1~1468 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9db2d7af54f025a0bb86f9dad5b979a0b856ab61;p=thirdparty%2Ftvheadend.git epggrab: recode previous commit using pthread_cond_timedwait --- diff --git a/src/epggrab.c b/src/epggrab.c index d18a845e7..6183044c7 100644 --- a/src/epggrab.c +++ b/src/epggrab.c @@ -92,16 +92,22 @@ static void* _epggrab_internal_thread ( void* p ) /* Setup timeout */ ts.tv_nsec = 0; - time(&ts.tv_sec); + ts.tv_sec = time(NULL) + 120; /* Time for other jobs */ - t = dispatch_clock + 120; while (epggrab_running) { - if (t < dispatch_clock) - break; - usleep(200000); + pthread_mutex_lock(&epggrab_mutex); + err = ETIMEDOUT; + while (epggrab_running) { + err = pthread_cond_timedwait(&epggrab_cond, &epggrab_mutex, &ts); + if (err == ETIMEDOUT) break; + } + pthread_mutex_unlock(&epggrab_mutex); + if (err == ETIMEDOUT) break; } + time(&ts.tv_sec); + while (epggrab_running) { /* Check for config change */