]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Implement dvr_entry_cancel_delete in dvr_db and deleteDvrEntry/cancelDvrEntry in... 27/head
authorDimitris Kazakos <nemphys@gmail.com>
Wed, 20 Apr 2011 09:51:41 +0000 (12:51 +0300)
committerDimitris Kazakos <nemphys@gmail.com>
Wed, 20 Apr 2011 18:09:56 +0000 (21:09 +0300)
src/dvr/dvr.h
src/dvr/dvr_db.c
src/htsp.c

index d4940d679648757ae0beaa0dfdaf28376fbd32f2..e8ebee9e8d9062aaf8f5b1d53d7fd02a3c71eed7 100644 (file)
@@ -278,6 +278,8 @@ void dvr_extra_time_post_set(dvr_config_t *cfg, int d);
 
 void dvr_entry_delete(dvr_entry_t *de);
 
+void dvr_entry_cancel_delete(dvr_entry_t *de);
+
 /**
  * Query interface
  */
index acc626fae788c8b67f3b22bebe15bb39ec8bc170..c4e55b498e37941526183aa683ef5e45d019332a 100644 (file)
@@ -1196,3 +1196,29 @@ dvr_entry_delete(dvr_entry_t *de)
   dvr_entry_remove(de);
 }
 
+/**
+ *
+ */
+void
+dvr_entry_cancel_delete(dvr_entry_t *de)
+{
+  switch(de->de_sched_state) {
+  case DVR_SCHEDULED:
+    dvr_entry_remove(de);
+    break;
+
+  case DVR_RECORDING:
+    de->de_dont_reschedule = 1;
+    dvr_stop_recording(de, SM_CODE_ABORTED);
+  case DVR_COMPLETED:
+    dvr_entry_delete(de);
+    break;
+
+  case DVR_MISSED_TIME:
+    dvr_entry_remove(de);
+    break;
+
+  default:
+    abort();
+  }
+}
index 9d916ec43d5361ac75e21d61eace3c498d28738b..6077f00925fe0380683a3965cad20938020f33d8 100644 (file)
@@ -608,28 +608,53 @@ htsp_method_updateDvrEntry(htsp_connection_t *htsp, htsmsg_t *in)
   return out;
 }
 
+/**
+ * cancel a Dvrentry
+ */
+static htsmsg_t *
+htsp_method_cancelDvrEntry(htsp_connection_t *htsp, htsmsg_t *in)
+{
+  htsmsg_t *out;
+  uint32_t dvrEntryId;
+  dvr_entry_t *de;
+
+  if(htsmsg_get_u32(in, "id", &dvrEntryId))
+    return htsp_error("Missing argument 'id'");
+
+  if( (de = dvr_entry_find_by_id(dvrEntryId)) == NULL)
+    return htsp_error("id not found");
+
+  dvr_entry_cancel(de);
+
+  //create response
+  out = htsmsg_create_map();
+  htsmsg_add_u32(out, "success", 1);
+
+  return out;
+}
+
 /**
  * delete a Dvrentry
  */
-static htsmsg_t * 
+static htsmsg_t *
 htsp_method_deleteDvrEntry(htsp_connection_t *htsp, htsmsg_t *in)
 {
   htsmsg_t *out;
   uint32_t dvrEntryId;
   dvr_entry_t *de;
-    
+
   if(htsmsg_get_u32(in, "id", &dvrEntryId))
     return htsp_error("Missing argument 'id'");
 
   if( (de = dvr_entry_find_by_id(dvrEntryId)) == NULL)
     return htsp_error("id not found");
 
-  dvr_entry_cancel(de);
+  dvr_entry_cancel_delete(de);
 
   //create response
   out = htsmsg_create_map();
   htsmsg_add_u32(out, "success", 1);
-  
+
   return out;
 }
 
@@ -1000,6 +1025,7 @@ struct {
   { "subscriptionChangeWeight", htsp_method_change_weight, ACCESS_STREAMING},
   { "addDvrEntry", htsp_method_addDvrEntry, ACCESS_RECORDER},
   { "updateDvrEntry", htsp_method_updateDvrEntry, ACCESS_RECORDER},
+  { "cancelDvrEntry", htsp_method_cancelDvrEntry, ACCESS_RECORDER},
   { "deleteDvrEntry", htsp_method_deleteDvrEntry, ACCESS_RECORDER},
   { "epgQuery", htsp_method_epgQuery, ACCESS_STREAMING},