]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Revert "dvr: move dvr_notify() call to the global_lock using timers, fixes #5437"
authorJaroslav Kysela <perex@perex.cz>
Tue, 25 Dec 2018 16:34:26 +0000 (17:34 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 25 Dec 2018 16:34:26 +0000 (17:34 +0100)
This reverts commit 91f6de4437f13d51a854ffe999cca63ff2ef503c.

src/dvr/dvr.h
src/dvr/dvr_rec.c

index 1d796058d77d027683513224e446652a3430d598..755b14cfbc2fdce7bbfc4477d68c265cf26ef4c6 100644 (file)
@@ -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;
 
index 922ebf57d74c506122ed42b5ff29557883edb49d..bfa34008c1c79fe7ba178978abe320e9063d4536 100644 (file)
@@ -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;