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);
}
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);