aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/pmt.cpp
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-11-29 14:17:37 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-11-29 14:17:37 +0100
commita600a785717d30f1f9729592e6e8d9d5b3b9bb38 (patch)
tree76bb959246ad05754b11eab2295da241047c2413 /lib/dvb/pmt.cpp
parente6d95074399c5cb2172710fda726c9ba4df2e373 (diff)
parent26e11cd67e0bbfebd41b860a008f240d3d1b3052 (diff)
downloadenigma2-a600a785717d30f1f9729592e6e8d9d5b3b9bb38.tar.gz
enigma2-a600a785717d30f1f9729592e6e8d9d5b3b9bb38.zip
Merge branch 'bug_621_caid_info' into experimental
Diffstat (limited to 'lib/dvb/pmt.cpp')
-rw-r--r--lib/dvb/pmt.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index ee6bb19d..d6733849 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -173,13 +173,13 @@ PyObject *eDVBServicePMTHandler::getCaIds(bool pair)
if ( !getProgramInfo(prog) )
{
- int cnt=prog.caids.size();
- if (cnt)
+ if (pair)
{
- ret=PyList_New(cnt);
- std::set<program::capid_pair>::iterator it(prog.caids.begin());
- if (pair)
+ int cnt=prog.caids.size();
+ if (cnt)
{
+ ret=PyList_New(cnt);
+ std::list<program::capid_pair>::iterator it(prog.caids.begin());
while(cnt--)
{
ePyObject tuple = PyTuple_New(2);
@@ -188,11 +188,15 @@ PyObject *eDVBServicePMTHandler::getCaIds(bool pair)
PyList_SET_ITEM(ret, cnt, tuple);
}
}
- else
- {
- while(cnt--)
- PyList_SET_ITEM(ret, cnt, PyInt_FromLong((it++)->caid));
- }
+ }
+ else
+ {
+ std::set<program::capid_pair> set(prog.caids.begin(), prog.caids.end());
+ std::set<program::capid_pair>::iterator it(set.begin());
+ int cnt=set.size();
+ ret=PyList_New(cnt);
+ while(cnt--)
+ PyList_SET_ITEM(ret, cnt, PyInt_FromLong((it++)->caid));
}
}
@@ -255,7 +259,7 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
program::capid_pair pair;
pair.caid = descr->getCaSystemId();
pair.capid = descr->getCaPid();
- program.caids.insert(pair);
+ program.caids.push_back(pair);
}
else if ((*desc)->getTag() == REGISTRATION_DESCRIPTOR)
{
@@ -522,7 +526,7 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
program::capid_pair pair;
pair.caid = descr->getCaSystemId();
pair.capid = descr->getCaPid();
- program.caids.insert(pair);
+ program.caids.push_back(pair);
break;
}
default:
@@ -646,7 +650,7 @@ int eDVBServicePMTHandler::getProgramInfo(program &program)
program::capid_pair pair;
pair.caid = *it;
pair.capid = -1; // not known yet
- program.caids.insert(pair);
+ program.caids.push_back(pair);
}
if ( cnt )
ret = 0;