Add a checkbox for enabling/disabling grabbing.

This commit is contained in:
Andreas Öman 2008-09-27 09:15:00 +00:00
parent c994aa991b
commit 1b694820ec
4 changed files with 32 additions and 2 deletions

View file

@ -795,6 +795,7 @@ extjs_xmltv(http_connection_t *hc, const char *remain, void *opaque)
htsmsg_add_str(r, "grabber", s);
htsmsg_add_u32(r, "grabinterval", xmltv_grab_interval);
htsmsg_add_u32(r, "grabenable", xmltv_grab_enabled);
pthread_mutex_unlock(&xmltv_mutex);
out = json_single_record(r, "xmltvSettings");
@ -809,6 +810,9 @@ extjs_xmltv(http_connection_t *hc, const char *remain, void *opaque)
s = http_arg_get(&hc->hc_req_args, "grabinterval");
xmltv_set_grab_interval(atoi(s));
s = http_arg_get(&hc->hc_req_args, "grabenable");
xmltv_set_grab_enable(!!s);
pthread_mutex_unlock(&xmltv_mutex);
out = htsmsg_create();

View file

@ -79,7 +79,7 @@ tvheadend.xmltv = function() {
var confreader = new Ext.data.JsonReader({
root: 'xmltvSettings',
}, ['grabber','grabinterval']);
}, ['grabber','grabinterval','grabenable']);
var grabberSelect = new Ext.form.ComboBox({
loadingText: 'Loading, please wait...',
@ -115,6 +115,9 @@ tvheadend.xmltv = function() {
maxValue: 100,
fieldLabel: 'Grab interval (hours)',
name: 'grabinterval'
}), new Ext.form.Checkbox({
fieldLabel: 'Enable grabbing',
name: 'grabenable'
})
],
tbar: [{

23
xmltv.c
View file

@ -63,6 +63,7 @@ static xmltv_grabber_t *xg_current;
uint32_t xmltv_grab_interval;
uint32_t xmltv_grab_enabled;
/* xmltv_channels is protected by global_lock */
static struct xmltv_channel_tree xmltv_channels;
@ -473,7 +474,7 @@ xmltv_thread(void *aux)
while(confver == xmltv_confver) {
if(xg_current == NULL) {
if(xg_current == NULL || !xmltv_grab_enabled) {
pthread_cond_wait(&xmltv_cond, &xmltv_mutex);
continue;
}
@ -481,6 +482,9 @@ xmltv_thread(void *aux)
break;
}
if(xmltv_grab_enabled == 0)
continue;
ts.tv_sec = time(NULL) + xmltv_grab_interval * 3600;
confver = xmltv_confver;
@ -512,6 +516,7 @@ xmltv_init(void)
{
pthread_t ptid;
xmltv_grab_interval = 12; /* Default half a day */
xmltv_grab_enabled = 1; /* Default on */
/* Load all channels */
xmltv_load();
@ -735,6 +740,7 @@ xmltv_grabbers_load(void)
return;
htsmsg_get_u32(m, "grab-interval", &xmltv_grab_interval);
htsmsg_get_u32(m, "grab-enabled", &xmltv_grab_enabled);
if((l = htsmsg_get_array(m, "grabbers")) != NULL) {
@ -794,6 +800,7 @@ xmltv_grabbers_save(void)
htsmsg_add_msg(m, "grabbers", array);
htsmsg_add_u32(m, "grab-interval", xmltv_grab_interval);
htsmsg_add_u32(m, "grab-enabled", xmltv_grab_enabled);
if(xg_current != NULL)
htsmsg_add_str(m, "current-grabber", xg_current->xg_path);
@ -885,3 +892,17 @@ xmltv_set_grab_interval(int s)
xmltv_grabbers_save();
}
/**
*
*/
void
xmltv_set_grab_enable(int on)
{
lock_assert(&xmltv_mutex);
xmltv_grab_enabled = on;
xmltv_confver++;
pthread_cond_signal(&xmltv_cond);
xmltv_grabbers_save();
}

View file

@ -51,9 +51,11 @@ htsmsg_t *xmltv_list_grabbers(void);
const char *xmltv_get_current_grabber(void);
void xmltv_set_current_grabber(const char *path);
void xmltv_set_grab_interval(int s);
void xmltv_set_grab_enable(int on);
extern struct xmltv_channel_list xmltv_displaylist;
extern uint32_t xmltv_grab_interval;
extern uint32_t xmltv_grab_enabled;
extern pthread_mutex_t xmltv_mutex;
#endif /* EPG_XMLTV_H__ */