]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
fix bug where recording stopped when the stream was reconfigured
authorJohn Törnblom <john.tornblom@gmail.com>
Mon, 26 Nov 2012 10:36:47 +0000 (11:36 +0100)
committerJohn Törnblom <john.tornblom@gmail.com>
Tue, 27 Nov 2012 11:14:40 +0000 (12:14 +0100)
src/dvr/dvr_rec.c

index a44b15c1fd9e8fc13122594d2a3135371c303dbb..48696d42cac9cc9592fb8defa8286a78eae4189e 100755 (executable)
@@ -472,9 +472,11 @@ dvr_thread(void *aux)
       break;
 
     case SMT_STOP:
+       if(sm->sm_code == SM_CODE_SOURCE_RECONFIGURED) {
+        // Subscription is restarting, wait for SMT_START
 
-      if(sm->sm_code == 0) {
-       /* Completed */
+       } else if(sm->sm_code == 0) {
+        // Recording is completed
 
        de->de_last_error = 0;
 
@@ -482,18 +484,21 @@ dvr_thread(void *aux)
               "dvr", "Recording completed: \"%s\"",
               de->de_filename ?: lang_str_get(de->de_title, NULL));
 
-      } else if(sm->sm_code != SM_CODE_SOURCE_RECONFIGURED) {
-       if(de->de_last_error != sm->sm_code) {
-         dvr_rec_set_state(de, DVR_RS_ERROR, sm->sm_code);
+       dvr_thread_epilog(de);
+       started = 0;
 
-         tvhlog(LOG_ERR,
-                "dvr", "Recording stopped: \"%s\": %s",
-                de->de_filename ?: lang_str_get(de->de_title, NULL),
-                streaming_code2txt(sm->sm_code));
-       }
-      }
+      }else if(de->de_last_error != sm->sm_code) {
+        // Error during recording
+
+        dvr_rec_set_state(de, DVR_RS_ERROR, sm->sm_code);
+        tvhlog(LOG_ERR,
+               "dvr", "Recording stopped: \"%s\": %s",
+               de->de_filename ?: lang_str_get(de->de_title, NULL),
+               streaming_code2txt(sm->sm_code));
 
-      dvr_thread_epilog(de);
+        dvr_thread_epilog(de);
+        started = 0;
+      }
       break;
 
     case SMT_SERVICE_STATUS: