From: Jaroslav Kysela Date: Tue, 25 Dec 2018 16:34:26 +0000 (+0100) Subject: Revert "dvr: move dvr_notify() call to the global_lock using timers, fixes #5437" X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=312dce6e22e2d3ab21475a08e1f44dae4859173c;p=thirdparty%2Ftvheadend.git Revert "dvr: move dvr_notify() call to the global_lock using timers, fixes #5437" This reverts commit 91f6de4437f13d51a854ffe999cca63ff2ef503c. --- diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 1d796058d..755b14cfb 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -201,7 +201,6 @@ typedef struct dvr_entry { char *de_channel_name; gtimer_t de_timer; - gtimer_t de_notify_timer; gtimer_t de_watched_timer; mtimer_t de_deferred_timer; diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index 922ebf57d..bfa34008c 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -196,8 +196,6 @@ dvr_rec_unsubscribe(dvr_entry_t *de) pthread_join(de->de_thread, (void **)&postproc); - gtimer_disarm(&de->de_notify_timer); - if (prch->prch_muxer) dvr_thread_epilog(de, postproc); @@ -1180,9 +1178,8 @@ dvr_rec_fatal_error(dvr_entry_t *de, const char *fmt, ...) * */ static void -dvr_notify(void *aux) +dvr_notify(dvr_entry_t *de) { - dvr_entry_t *de = aux; if (de->de_last_notify + sec2mono(5) < mclk()) { idnode_notify_changed(&de->de_id); de->de_last_notify = mclk(); @@ -1714,7 +1711,7 @@ dvr_thread(void *aux) } else { dvr_thread_pkt_stats(de, pkt, 0); } - gtimer_arm_rel(&de->de_notify_timer, dvr_notify, de, 0); + dvr_notify(de); packets++; break; @@ -1762,7 +1759,7 @@ dvr_thread(void *aux) dvr_thread_mpegts_stats(de, sm->sm_data); muxer_write_pkt(prch->prch_muxer, sm->sm_type, sm->sm_data); sm->sm_data = NULL; - gtimer_arm_rel(&de->de_notify_timer, dvr_notify, de, 0); + dvr_notify(de); packets++; break; @@ -1775,14 +1772,14 @@ dvr_thread(void *aux) 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\"", @@ -1802,7 +1799,6 @@ fin: 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;