From fd0d9931dd58aa967c4c7f951105191cacc43bae Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 27 Jun 2014 23:40:40 +0200 Subject: [PATCH] epg: do not subscribe to muxes without any active (assigned) channels --- src/epggrab/otamux.c | 6 +++--- src/input/mpegts.h | 1 + src/input/mpegts/mpegts_mux.c | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/epggrab/otamux.c b/src/epggrab/otamux.c index 5ffb4bd2..de3e59b6 100644 --- a/src/epggrab/otamux.c +++ b/src/epggrab/otamux.c @@ -124,9 +124,8 @@ epggrab_ota_done ( epggrab_ota_mux_t *ota, int timeout ) epggrab_ota_pending_timer_cb(NULL); /* Remove from active */ - if (!timeout) { + if (!timeout) epggrab_ota_active_timer_cb(NULL); - } } static void @@ -339,7 +338,8 @@ next_one: } /* Subscribe to the mux */ - if (mpegts_mux_subscribe(mm, "epggrab", SUBSCRIPTION_PRIO_EPG)) { + if (mm->mm_is_epg(mm) <= 0 || + mpegts_mux_subscribe(mm, "epggrab", SUBSCRIPTION_PRIO_EPG)) { om->om_active = 0; om->om_when = dispatch_clock + epggrab_ota_period(om, 4) + extra; LIST_INSERT_SORTED(&epggrab_ota_pending, om, om_q_link, om_time_cmp); diff --git a/src/input/mpegts.h b/src/input/mpegts.h index e6542fa1..23b0b3d7 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -377,6 +377,7 @@ struct mpegts_mux void (*mm_open_table) (mpegts_mux_t*,mpegts_table_t*,int subscribe); void (*mm_close_table) (mpegts_mux_t*,mpegts_table_t*); void (*mm_create_instances) (mpegts_mux_t*); + int (*mm_is_epg) (mpegts_mux_t*); /* * Configuration diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 084e5eee..ad956b73 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -439,6 +439,20 @@ mpegts_mux_is_enabled ( mpegts_mux_t *mm ) return mm->mm_enabled; } +static int +mpegts_mux_is_epg ( mpegts_mux_t *mm ) +{ + mpegts_service_t *s; + + lock_assert(&global_lock); + + LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link) + if (LIST_FIRST(&s->s_channels)) + break; + + return s ? 1 : 0; +} + static void mpegts_mux_create_instances ( mpegts_mux_t *mm ) { @@ -833,6 +847,7 @@ mpegts_mux_create0 mm->mm_display_name = mpegts_mux_display_name; mm->mm_config_save = mpegts_mux_config_save; mm->mm_is_enabled = mpegts_mux_is_enabled; + mm->mm_is_epg = mpegts_mux_is_epg; /* Start/stop */ mm->mm_start = mpegts_mux_start;