Merge remote-tracking branch 'origin/pr/152'

This commit is contained in:
Adam Sutton 2013-03-08 10:49:26 +00:00
commit 81c48b1de1

View file

@ -89,9 +89,10 @@ th_dvb_mux_instance_t *epggrab_mux_next ( th_dvb_adapter_t *tda )
epggrab_ota_mux_t *ota;
time(&now);
TAILQ_FOREACH(ota, &ota_mux_all, glob_link) {
if (ota->tdmi->tdmi_adapter != tda) continue;
if (ota->interval + ota->completed > now) return NULL;
if (!ota->is_reg) return NULL;
if (ota->tdmi->tdmi_adapter == tda) break;
break;
}
return ota ? ota->tdmi : NULL;
}
@ -337,7 +338,21 @@ static void _epggrab_ota_finished ( epggrab_ota_mux_t *ota )
/* Reinsert into reg queue */
else {
TAILQ_REMOVE(&ota_mux_all, ota, glob_link);
TAILQ_INSERT_SORTED(&ota_mux_all, ota, glob_link, _ota_time_cmp);
// Find the last queue entry that can run before ota
// (i.e _ota_time_cmp(ota, entry)>0) and re-insert ota
// directly after this entry. If no matching entry is
// found (i.e ota can run before any other entry),
// re-insert ota at the queue head.
epggrab_ota_mux_t *entry = NULL;
epggrab_ota_mux_t *tmp;
TAILQ_FOREACH(tmp, &ota_mux_all, glob_link) {
if(_ota_time_cmp(ota, tmp)>0) entry = tmp;
}
if (entry) {
TAILQ_INSERT_AFTER(&ota_mux_all, entry, ota, glob_link);
} else {
TAILQ_INSERT_HEAD(&ota_mux_all, ota, glob_link);
}
}
}