diff --git a/src/descrambler/capmt.c b/src/descrambler/capmt.c index e7c175f0..5d86c3df 100644 --- a/src/descrambler/capmt.c +++ b/src/descrambler/capmt.c @@ -586,13 +586,13 @@ capmt_thread(void *aux) la = (linuxdvb_adapter_t*)is->is_array[i]; if (!la || !la->mi_is_enabled) continue; if (!la->mi_is_enabled((mpegts_input_t*)la)) continue; - if (la->la_number > MAX_CA) { + if (la->la_dvb_number > MAX_CA) { tvhlog(LOG_ERR, "capmt", "adapter number > MAX_CA"); continue; } tvhlog(LOG_INFO, "capmt", "Creating capmt UDP socket for adapter %d", - la->la_number); - bind_ok = capmt_create_udp_socket(&capmt->capmt_sock_ca0[la->la_number], 9000 + la->la_number); + la->la_dvb_number); + bind_ok = capmt_create_udp_socket(&capmt->capmt_sock_ca0[la->la_dvb_number], 9000 + la->la_dvb_number); } } if (bind_ok) @@ -656,7 +656,7 @@ capmt_table_input(struct th_descrambler *td, struct service *s, lfe = (linuxdvb_frontend_t*)t->s_dvb_active_input; if (!idnode_is_instance(&lfe->ti_id, &linuxdvb_frontend_class)) return; - adapter_num = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_number; + adapter_num = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_dvb_number; caid_t *c; @@ -895,7 +895,7 @@ capmt_service_start(service_t *s) lfe = (linuxdvb_frontend_t*)t->s_dvb_active_input; if (!idnode_is_instance(&lfe->ti_id, &linuxdvb_frontend_class)) return; - tuner = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_number; + tuner = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_dvb_number; TAILQ_FOREACH(capmt, &capmts, capmt_link) { /* skip, if we're not active */ diff --git a/src/input/mpegts/linuxdvb/linuxdvb_adapter.c b/src/input/mpegts/linuxdvb/linuxdvb_adapter.c index 9b0e60c0..51336b4a 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_adapter.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_adapter.c @@ -113,6 +113,9 @@ linuxdvb_adapter_is_enabled ( mpegts_input_t *mi ) linuxdvb_adapter_t *la = (linuxdvb_adapter_t*)mi; linuxdvb_hardware_t *lh; + if (la->la_dvb_number == -1) + return 0; + LIST_FOREACH(lh, &la->lh_children, lh_parent_link) if (lh->mi_is_enabled && lh->mi_is_enabled((mpegts_input_t*)lh)) return 1; @@ -143,6 +146,8 @@ linuxdvb_adapter_create0 la->mi_is_enabled = linuxdvb_adapter_is_enabled; la->mi_enabled = 1; + la->la_dvb_number = -1; + /* No conf */ if (!conf) return la; @@ -252,6 +257,7 @@ linuxdvb_adapter_added ( int adapter ) tvhlog(LOG_ERR, "linuxdvb", "failed to find/create adapter%d", adapter); return NULL; } + la->la_dvb_number = adapter; if (!la->mi_displayname) { char buf[256]; snprintf(buf, sizeof(buf), "%s #%d", dfi.name, la->la_number); diff --git a/src/input/mpegts/linuxdvb/linuxdvb_private.h b/src/input/mpegts/linuxdvb/linuxdvb_private.h index 78eb7d50..80d0db3d 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_private.h +++ b/src/input/mpegts/linuxdvb/linuxdvb_private.h @@ -93,6 +93,7 @@ struct linuxdvb_adapter */ char *la_rootpath; uint32_t la_number; + int la_dvb_number; }; #define LINUXDVB_SUBSYS_FE 0x01