diff --git a/src/service.c b/src/service.c index 7b76ebfb..5905c9bc 100644 --- a/src/service.c +++ b/src/service.c @@ -1110,3 +1110,20 @@ service_get_encryption(service_t *t) } return 0; } + +/* + * Find the primary EPG service (to stop EPG trying to update + * from multiple OTA sources) + */ +int +service_is_primary_epg(service_t *svc) +{ + service_t *ret = NULL, *t; + if (!svc || !svc->s_ch) return 0; + LIST_FOREACH(t, &svc->s_ch->ch_services, s_ch_link) { + if (!t->s_enabled || !t->s_dvb_eit_enable) continue; + if (!ret || dvb_extra_prio(t->s_dvb_mux_instance->tdmi_adapter) > dvb_extra_prio(ret->s_dvb_mux_instance->tdmi_adapter)) + ret = t; + } + return !ret ? 0 : (ret->s_dvb_service_id == svc->s_dvb_service_id); +} diff --git a/src/service.h b/src/service.h index db6213a8..543b8741 100644 --- a/src/service.h +++ b/src/service.h @@ -574,4 +574,6 @@ void service_set_dvb_default_charset(service_t *t, const char *dvb_default_chars void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable); +int service_is_primary_epg (service_t *t); + #endif // SERVICE_H__