diff --git a/src/service.c b/src/service.c index 2e665442..7db19fc0 100644 --- a/src/service.c +++ b/src/service.c @@ -1130,3 +1130,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 2287db50..9d2931b9 100644 --- a/src/service.h +++ b/src/service.h @@ -576,4 +576,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__