Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts input: fix free weight handling (for example epggrab endless l…
…oop)
  • Loading branch information
perexg committed Dec 8, 2015
1 parent 36e42e6 commit 5b5f241
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
8 changes: 5 additions & 3 deletions src/input/mpegts/mpegts_service.c
Expand Up @@ -289,8 +289,9 @@ mpegts_service_config_save ( service_t *t )
* Service instance list
*/
static void
mpegts_service_enlist(service_t *t, tvh_input_t *ti,
struct service_instance_list *sil, int flags)
mpegts_service_enlist
( service_t *t, tvh_input_t *ti, struct service_instance_list *sil,
int flags, int weight )
{
int p = 0, w;
mpegts_service_t *s = (mpegts_service_t*)t;
Expand Down Expand Up @@ -322,7 +323,8 @@ mpegts_service_enlist(service_t *t, tvh_input_t *ti,
} else {
w = mi->mi_get_weight(mi, mmi->mmi_mux, flags);
p = mi->mi_get_priority(mi, mmi->mmi_mux, flags);
if (w > 0 && mi->mi_free_weight && w < mi->mi_free_weight)
if (w > 0 && mi->mi_free_weight &&
weight >= mi->mi_free_weight && w < mi->mi_free_weight)
w = 0;
}

Expand Down
6 changes: 3 additions & 3 deletions src/service.c
Expand Up @@ -686,7 +686,7 @@ service_find_instance
pro->pro_svfilter == PROFILE_SVF_NONE ||
(pro->pro_svfilter == PROFILE_SVF_SD && service_is_sdtv(s)) ||
(pro->pro_svfilter == PROFILE_SVF_HD && service_is_hdtv(s))) {
s->s_enlist(s, ti, sil, flags);
s->s_enlist(s, ti, sil, flags, weight);
enlisted++;
}
}
Expand All @@ -695,11 +695,11 @@ service_find_instance
LIST_FOREACH(ilm, &ch->ch_services, ilm_in2_link) {
s = (service_t *)ilm->ilm_in1;
if (s->s_is_enabled(s, flags))
s->s_enlist(s, ti, sil, flags);
s->s_enlist(s, ti, sil, flags, weight);
}
}
} else {
s->s_enlist(s, ti, sil, flags);
s->s_enlist(s, ti, sil, flags, weight);
}

/* Clean */
Expand Down
2 changes: 1 addition & 1 deletion src/service.h
Expand Up @@ -294,7 +294,7 @@ typedef struct service {
int (*s_is_enabled)(struct service *t, int flags);

void (*s_enlist)(struct service *s, struct tvh_input *ti,
service_instance_list_t *sil, int flags);
service_instance_list_t *sil, int flags, int weight);

int (*s_start_feed)(struct service *s, int instance, int weight, int flags);

Expand Down

0 comments on commit 5b5f241

Please sign in to comment.