]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: Add invalid target (file not created) to the status
authorJaroslav Kysela <perex@perex.cz>
Thu, 28 May 2015 12:00:53 +0000 (14:00 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 28 May 2015 12:00:53 +0000 (14:00 +0200)
src/dvr/dvr.h
src/dvr/dvr_db.c
src/dvr/dvr_rec.c
src/htsp_server.c
src/streaming.c
src/tvheadend.h

index bdd76cc656d4f419bef0279506fd59ec7b2b8c20..d772e80d4c7073582610ed1c2b5eba3040d2ccd8 100644 (file)
@@ -454,6 +454,8 @@ dvr_entry_update( dvr_entry_t *de,
 
 void dvr_destroy_by_channel(channel_t *ch, int delconf);
 
+void dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf);
+
 int dvr_rec_subscribe(dvr_entry_t *de);
 
 void dvr_rec_unsubscribe(dvr_entry_t *de);
index 74b49cab23481a6d07349b1524aeaf665eb94264..cf9d901649153773ddf053e9284425803679921e 100644 (file)
@@ -297,6 +297,8 @@ dvr_entry_status(dvr_entry_t *de)
     }
 
   case DVR_COMPLETED:
+    if(de->de_last_error == SM_CODE_INVALID_TARGET)
+      return "File Not Created";
     if(dvr_get_filesize(de) == -1)
       return "File Missing";
     if(de->de_last_error)
@@ -1149,16 +1151,17 @@ void dvr_event_updated ( epg_broadcast_t *e )
 /**
  *
  */
-static void
+void
 dvr_stop_recording(dvr_entry_t *de, int stopcode, int saveconf)
 {
   dvr_rs_state_t rec_state = de->de_rec_state;
 
   dvr_rec_unsubscribe(de);
 
-  if (rec_state == DVR_RS_PENDING ||
-      rec_state == DVR_RS_WAIT_PROGRAM_START ||
-      htsmsg_is_empty(de->de_files))
+  if (stopcode != SM_CODE_INVALID_TARGET &&
+      (rec_state == DVR_RS_PENDING ||
+       rec_state == DVR_RS_WAIT_PROGRAM_START ||
+       htsmsg_is_empty(de->de_files)))
     dvr_entry_missed_time(de, stopcode);
   else
     dvr_entry_completed(de, stopcode);
index 29839ab72acd61fc9b9ce9bbd844834bd3a630bf..70e5aea6518b9711bf2c3b4006248716c7aa6bc3 100644 (file)
@@ -931,6 +931,8 @@ dvr_thread(void *aux)
         dvr_rec_set_state(de, DVR_RS_WAIT_PROGRAM_START, 0);
         if(dvr_rec_start(de, sm->sm_data) == 0)
           started = 1;
+        else
+          dvr_stop_recording(de, SM_CODE_INVALID_TARGET, 1);
         pthread_mutex_unlock(&global_lock);
       } 
       break;
index 1e3c6c87ba02d4fb0baedecc5e946fd82b627b98..0dabd500b0ebc9ca432b1bc89f306b71893c5a36 100644 (file)
@@ -3584,6 +3584,8 @@ _htsp_get_subscription_status(int smcode)
     return "subscriptionOverridden";
   case SM_CODE_MUX_NOT_ENABLED:
     return "muxNotEnabled";
+  case SM_CODE_INVALID_TARGET:
+    return "invalidTarget";
   default:
     return streaming_code2txt(smcode);
   }
index 4832c03d81c07167707f9290a325f225ad834765..38d1d65df2d66e7cd91d088da699c253e7ce0cf1 100644 (file)
@@ -412,6 +412,8 @@ streaming_code2txt(int code)
     return "Source deleted";
   case SM_CODE_SUBSCRIPTION_OVERRIDDEN:
     return "Subscription overridden";
+  case SM_CODE_INVALID_TARGET:
+    return "Invalid target";
 
   case SM_CODE_NO_FREE_ADAPTER:
     return "No free adapter";
index 7ed2e0c85918f58df29754df3c3971175bb4c8b0..ca7336a6fbd9760a0a5a334385d7c9659a2ea90a 100644 (file)
@@ -448,6 +448,7 @@ typedef enum {
 #define SM_CODE_BAD_SOURCE                101
 #define SM_CODE_SOURCE_DELETED            102
 #define SM_CODE_SUBSCRIPTION_OVERRIDDEN   103
+#define SM_CODE_INVALID_TARGET            104
 
 #define SM_CODE_NO_FREE_ADAPTER           200
 #define SM_CODE_MUX_NOT_ENABLED           201