]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvr: fix shutdown sequence in main.c and properly unsubscribe in dvr_entry_done()
authorJaroslav Kysela <perex@perex.cz>
Sat, 15 Oct 2016 18:56:58 +0000 (20:56 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sat, 15 Oct 2016 18:56:58 +0000 (20:56 +0200)
src/dvr/dvr_db.c
src/main.c

index 9ac18e6ee37c8f8d5389a0863eae3002bce86000..8ac0e95aff6f4531e7640b72d4d99de7dd3e9d7f 100644 (file)
@@ -3738,6 +3738,9 @@ dvr_entry_done(void)
 {
   dvr_entry_t *de;
   lock_assert(&global_lock);
-  while ((de = LIST_FIRST(&dvrentries)) != NULL)
-      dvr_entry_destroy(de, 0);
+  while ((de = LIST_FIRST(&dvrentries)) != NULL) {
+    if (de->de_sched_state == DVR_RECORDING)
+      dvr_rec_unsubscribe(de);
+    dvr_entry_destroy(de, 0);
+  }
 }
index bc70832eb02ef237907d8c96f063a4d5c881c803..7f80f94b59a8a94e5cd114522dbd31dd9c734846 100644 (file)
@@ -1314,12 +1314,12 @@ main(int argc, char **argv)
 #if ENABLE_MPEGTS
   tvhftrace(LS_MAIN, mpegts_done);
 #endif
+  tvhftrace(LS_MAIN, dvr_done);
   tvhftrace(LS_MAIN, descrambler_done);
   tvhftrace(LS_MAIN, service_mapper_done);
   tvhftrace(LS_MAIN, service_done);
   tvhftrace(LS_MAIN, channel_done);
   tvhftrace(LS_MAIN, bouquet_done);
-  tvhftrace(LS_MAIN, dvr_done);
   tvhftrace(LS_MAIN, subscription_done);
   tvhftrace(LS_MAIN, access_done);
   tvhftrace(LS_MAIN, epg_done);