]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
epggrab: recode previous commit using pthread_cond_timedwait
authorJaroslav Kysela <perex@perex.cz>
Tue, 24 Nov 2015 19:12:10 +0000 (20:12 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 24 Nov 2015 19:12:10 +0000 (20:12 +0100)
src/epggrab.c

index d18a845e764615101f0ba500ed39cda42e2969c5..6183044c759005f78543182e2533fa79851ffa9c 100644 (file)
@@ -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 */