]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
capmt: simlify locking in capmt_thread
authorJaroslav Kysela <perex@perex.cz>
Sun, 8 Nov 2015 15:21:38 +0000 (16:21 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 8 Nov 2015 15:21:38 +0000 (16:21 +0100)
src/descrambler/capmt.c

index d983dc2b59d1ce6a52159b0a7082302ede9961cb..7282ec08574c21661e3bc08ef6573f0386e744b4 100644 (file)
@@ -1688,16 +1688,17 @@ capmt_thread(void *aux)
       pthread_mutex_unlock(&capmt->capmt_mutex);
       continue;
     }
-    pthread_mutex_unlock(&capmt->capmt_mutex);
 
     /* close opened sockets */
     for (i = 0; i < MAX_SOCKETS; i++)
-        capmt_socket_close_lock(capmt, i);
-    for (i = 0; i < MAX_CA; i++)
+      capmt_socket_close(capmt, i);
+
+    /* close all tuners */
+    for (i = 0; i < MAX_CA; i++) {
       if (capmt->capmt_adapters[i].ca_sock >= 0)
         close(capmt->capmt_adapters[i].ca_sock);
-
-    pthread_mutex_lock(&capmt->capmt_mutex);
+      capmt->capmt_adapters[i].ca_tuner = NULL;
+    }
 
     if (!capmt->capmt_running) {
       pthread_mutex_unlock(&capmt->capmt_mutex);
@@ -1711,8 +1712,8 @@ capmt_thread(void *aux)
       d = 60;
     }
 
-    ts.tv_sec = time(NULL) + d;
-    ts.tv_nsec = 0;
+    clock_gettime(CLOCK_REALTIME, &ts);
+    ts.tv_sec += d;
 
     tvhlog(LOG_INFO, "capmt", "%s: Automatic reconnection attempt in in %d seconds", idnode_get_title(&capmt->cac_id, NULL), d);