Extend the internal DVR API a bit (for the simple web interface)
This commit is contained in:
parent
300f76f753
commit
9fe1808895
2 changed files with 33 additions and 11 deletions
|
@ -43,9 +43,9 @@ LIST_HEAD(dvr_rec_stream_list, dvr_rec_stream);
|
|||
typedef enum {
|
||||
DVR_SCHEDULED, /* Scheduled for recording (in the future) */
|
||||
DVR_RECORDING,
|
||||
DVR_COMPLETED /* If recording failed, de->de_error is set to
|
||||
DVR_COMPLETED, /* If recording failed, de->de_error is set to
|
||||
a string */
|
||||
|
||||
DVR_NOSTATE,
|
||||
} dvr_entry_sched_state_t;
|
||||
|
||||
|
||||
|
@ -125,7 +125,7 @@ typedef struct dvr_entry {
|
|||
/**
|
||||
* Prototypes
|
||||
*/
|
||||
void dvr_entry_create_by_event(event_t *e, const char *creator);
|
||||
dvr_entry_t *dvr_entry_create_by_event(event_t *e, const char *creator);
|
||||
|
||||
void dvr_init(void);
|
||||
|
||||
|
@ -139,9 +139,11 @@ void dvr_rec_unsubscribe(dvr_entry_t *de);
|
|||
|
||||
dvr_entry_t *dvr_entry_find_by_id(int id);
|
||||
|
||||
dvr_entry_t *dvr_entry_find_by_event(event_t *e);
|
||||
|
||||
off_t dvr_get_filesize(dvr_entry_t *de);
|
||||
|
||||
void dvr_entry_cancel(dvr_entry_t *de);
|
||||
dvr_entry_t *dvr_entry_cancel(dvr_entry_t *de);
|
||||
|
||||
void dvr_entry_dec_ref(dvr_entry_t *de);
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ dvr_entry_link(dvr_entry_t *de)
|
|||
/**
|
||||
*
|
||||
*/
|
||||
void
|
||||
dvr_entry_t *
|
||||
dvr_entry_create_by_event(event_t *e, const char *creator)
|
||||
{
|
||||
dvr_entry_t *de;
|
||||
|
@ -139,11 +139,11 @@ dvr_entry_create_by_event(event_t *e, const char *creator)
|
|||
struct tm tm;
|
||||
|
||||
if(e->e_channel == NULL || e->e_title == NULL)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
LIST_FOREACH(de, &e->e_channel->ch_dvrs, de_channel_link)
|
||||
if(de->de_start == e->e_start && de->de_sched_state != DVR_COMPLETED)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
de = calloc(1, sizeof(dvr_entry_t));
|
||||
de->de_id = ++de_tally;
|
||||
|
@ -169,6 +169,7 @@ dvr_entry_create_by_event(event_t *e, const char *creator)
|
|||
|
||||
dvrdb_changed();
|
||||
dvr_entry_save(de);
|
||||
return de;
|
||||
}
|
||||
|
||||
|
||||
|
@ -403,25 +404,44 @@ dvr_entry_find_by_id(int id)
|
|||
return de;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void
|
||||
dvr_entry_t *
|
||||
dvr_entry_find_by_event(event_t *e)
|
||||
{
|
||||
dvr_entry_t *de;
|
||||
|
||||
LIST_FOREACH(de, &e->e_channel->ch_dvrs, de_channel_link)
|
||||
if(de->de_start == e->e_start &&
|
||||
de->de_stop == e->e_stop)
|
||||
return de;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
dvr_entry_t *
|
||||
dvr_entry_cancel(dvr_entry_t *de)
|
||||
{
|
||||
switch(de->de_sched_state) {
|
||||
case DVR_SCHEDULED:
|
||||
dvr_entry_remove(de);
|
||||
break;
|
||||
return NULL;
|
||||
|
||||
case DVR_RECORDING:
|
||||
de->de_dont_reschedule = 1;
|
||||
dvr_stop_recording(de, "Aborted by user");
|
||||
break;
|
||||
return de;
|
||||
|
||||
case DVR_COMPLETED:
|
||||
dvr_entry_remove(de);
|
||||
break;
|
||||
return NULL;
|
||||
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue