int dvb_mux_copy(th_dvb_adapter_t *dst, th_dvb_mux_instance_t *tdmi_src,
dvb_satconf_t *satconf);
+void dvb_mux_add_to_scan_queue (th_dvb_mux_instance_t *tdmi);
+
/**
* DVB Transport (aka DVB service)
*/
assert(tdmi->tdmi_scan_queue == NULL);
if(tdmi->tdmi_enabled) {
- int ti;
- ti = LIST_FIRST(&tdmi->tdmi_epg_grabbers) ? TDA_SCANQ_EPG
- : tdmi->tdmi_quality == 100 ? TDA_SCANQ_OK
- : TDA_SCANQ_BAD;
- tdmi->tdmi_scan_queue = &tda->tda_scan_queues[ti];
- TAILQ_INSERT_TAIL(tdmi->tdmi_scan_queue, tdmi, tdmi_scan_link);
+ dvb_mux_add_to_scan_queue(tdmi);
}
time(&tdmi->tdmi_lost_adapter);
dvb_mux_save(tdmi_dst);
return 0;
}
+
+void dvb_mux_add_to_scan_queue ( th_dvb_mux_instance_t *tdmi )
+{
+ int ti;
+ th_dvb_adapter_t *tda = tdmi->tdmi_adapter;
+ ti = LIST_FIRST(&tdmi->tdmi_epg_grabbers) ? TDA_SCANQ_EPG
+ : tdmi->tdmi_quality == 100 ? TDA_SCANQ_OK
+ : TDA_SCANQ_BAD;
+ tdmi->tdmi_scan_queue = &tda->tda_scan_queues[ti];
+ TAILQ_INSERT_TAIL(tdmi->tdmi_scan_queue, tdmi, tdmi_scan_link);
+}
LIST_INSERT_HEAD(&ota_muxes, ota, glob_link);
LIST_INSERT_HEAD(&tdmi->tdmi_epg_grabbers, ota, tdmi_link);
LIST_INSERT_HEAD(&mod->muxes, ota, grab_link);
+
+ /* Re-assign to correct queue */
+ if (tdmi->tdmi_scan_queue)
+ TAILQ_REMOVE(tdmi->tdmi_scan_queue, tdmi, tdmi_scan_link);
+ dvb_mux_add_to_scan_queue(tdmi);
+
return ota;
}