From: Jaroslav Kysela Date: Sun, 28 Jun 2015 09:06:14 +0000 (+0200) Subject: tasklet: fix for static tasklets, optimize disk space callback X-Git-Tag: v4.2.1~2214 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8bcfbcfa23e250091fee324e4ee4df6955f6d5bc;p=thirdparty%2Ftvheadend.git tasklet: fix for static tasklets, optimize disk space callback --- diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index d0a712af0..23e5ef5a6 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -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); } diff --git a/src/main.c b/src/main.c index e642eb776..674a83fde 100644 --- a/src/main.c +++ b/src/main.c @@ -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);