]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
tasklet: fix for static tasklets, optimize disk space callback
authorJaroslav Kysela <perex@perex.cz>
Sun, 28 Jun 2015 09:06:14 +0000 (11:06 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sun, 28 Jun 2015 09:06:14 +0000 (11:06 +0200)
src/dvr/dvr_rec.c
src/main.c

index d0a712af06d7af1e45f2efa9a833b23536eefa1b..23e5ef5a64ef1c7c44c58e6a1d55309e1220308f 100644 (file)
@@ -1140,17 +1140,16 @@ dvr_get_disk_space_update(const char *path)
 static void
 dvr_get_disk_space_tcb(void *opaque, int dearmed)
 {
-  const char *path = opaque;
-  htsmsg_t *m;
-
-  m = htsmsg_create_map();
-  pthread_mutex_lock(&dvr_disk_space_mutex);
-  dvr_get_disk_space_update(path);
-  htsmsg_add_s64(m, "freediskspace", dvr_bfree);
-  htsmsg_add_s64(m, "totaldiskspace", dvr_btotal);
-  pthread_mutex_unlock(&dvr_disk_space_mutex);
-
-  notify_by_msg("diskspaceUpdate", m);
+  if (!dearmed) {
+    htsmsg_t *m = htsmsg_create_map();
+    pthread_mutex_lock(&dvr_disk_space_mutex);
+    dvr_get_disk_space_update((char *)opaque);
+    htsmsg_add_s64(m, "freediskspace", dvr_bfree);
+    htsmsg_add_s64(m, "totaldiskspace", dvr_btotal);
+    pthread_mutex_unlock(&dvr_disk_space_mutex);
+
+    notify_by_msg("diskspaceUpdate", m);
+  }
 
   free(opaque);
 }
index e642eb7765eb81cca1d3a02c07d10ab6b2d82283..674a83fdeb758b75cf2dc33f5f80defa79510f9f 100644 (file)
@@ -416,8 +416,10 @@ tasklet_thread ( void *aux )
       pthread_cond_wait(&tasklet_cond, &tasklet_lock);
       continue;
     }
-    if (tsk->tsk_callback)
+    if (tsk->tsk_callback) {
       tsk->tsk_callback(tsk->tsk_opaque, 0);
+      tsk->tsk_callback = NULL;
+    }
     TAILQ_REMOVE(&tasklets, tsk, tsk_link);
   }
   pthread_mutex_unlock(&tasklet_lock);