]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
cwc: little optimization in cwc_table_input
authorJaroslav Kysela <perex@perex.cz>
Wed, 11 Feb 2015 14:03:31 +0000 (15:03 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 11 Feb 2015 14:03:43 +0000 (15:03 +0100)
src/descrambler/cwc.c

index 570dffe0c4711e073c49402bacd6f19796beb136..80337bb0ec347dd800dd4381f3ce37fb9be9abb2 100644 (file)
@@ -1606,7 +1606,6 @@ cwc_table_input(void *opaque, int pid, const uint8_t *data, int len)
   ecm_section_t *es;
   char chaninfo[32];
   struct cs_card_data *pcard = NULL;
-  int i_break;
   caid_t *c;
   uint16_t caid;
   uint32_t providerid;
@@ -1669,27 +1668,18 @@ cwc_table_input(void *opaque, int pid, const uint8_t *data, int len)
     return;
   }
 
-  i_break = 0;
-  c = NULL;
-  TAILQ_FOREACH(st, &t->s_components, es_link) {
-    if (st->es_pid != pid) continue;
-    LIST_FOREACH(c, &st->es_caids, link) {
-      LIST_FOREACH(pcard,&cwc->cwc_cards, cs_card) {
-        if(pcard->cwc_caid == c->caid && verify_provider(pcard, c->providerid)){
-          i_break = 1;
-          break;
-       }
-      }
-      if (i_break == 1) break;
-    }
-    if (i_break == 1) break;
+  st = service_stream_find((service_t *)t, pid);
+  if (st) {
+    LIST_FOREACH(c, &st->es_caids, link)
+      LIST_FOREACH(pcard, &cwc->cwc_cards, cs_card)
+        if(pcard->cwc_caid == c->caid && verify_provider(pcard, c->providerid))
+          goto found;
   }
 
-  if(c == NULL) {
-    pthread_mutex_unlock(&t->s_stream_mutex);
-    return;
-  }
+  pthread_mutex_unlock(&t->s_stream_mutex);
+  return;
 
+found:
   caid = c->caid;
   providerid = c->providerid;