pthread_join(de->de_thread, (void **)&postproc);
+ gtimer_disarm(&de->de_notify_timer);
+
if (prch->prch_muxer)
dvr_thread_epilog(de, postproc);
*
*/
static void
-dvr_notify(dvr_entry_t *de)
+dvr_notify(void *aux)
{
+ dvr_entry_t *de = aux;
if (de->de_last_notify + sec2mono(5) < mclk()) {
idnode_notify_changed(&de->de_id);
de->de_last_notify = mclk();
} else {
dvr_thread_pkt_stats(de, pkt, 0);
}
- dvr_notify(de);
+ gtimer_arm_rel(&de->de_notify_timer, dvr_notify, de, 0);
packets++;
break;
dvr_thread_mpegts_stats(de, sm->sm_data);
muxer_write_pkt(prch->prch_muxer, sm->sm_type, sm->sm_data);
sm->sm_data = NULL;
- dvr_notify(de);
+ gtimer_arm_rel(&de->de_notify_timer, dvr_notify, de, 0);
packets++;
break;
break;
case SMT_STOP:
- if (sm->sm_code == SM_CODE_SOURCE_RECONFIGURED) {
- // Subscription is restarting, wait for SMT_START
- if (muxing)
- tvhtrace(LS_DVR, "%s - source reconfigured", idnode_uuid_as_str(&de->de_id, ubuf));
- muxing = 0; // reconfigure muxer
+ if (sm->sm_code == SM_CODE_SOURCE_RECONFIGURED) {
+ // Subscription is restarting, wait for SMT_START
+ if (muxing)
+ tvhtrace(LS_DVR, "%s - source reconfigured", idnode_uuid_as_str(&de->de_id, ubuf));
+ muxing = 0; // reconfigure muxer
- } else if(sm->sm_code == 0) {
- // Recording is completed
+ } else if(sm->sm_code == 0) {
+ // Recording is completed
dvr_entry_set_state(de, de->de_sched_state, de->de_rec_state, SM_CODE_OK);
tvhinfo(LS_DVR, "Recording completed: \"%s\"",
streaming_queue_clear(&backlog);
if (!dvr_thread_global_lock(de, &run))
break;
+ gtimer_disarm(&de->de_notify_timer);
dvr_thread_epilog(de, postproc);
dvr_thread_global_unlock(de);
start_time = 0;