aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/pmt.cpp
diff options
context:
space:
mode:
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 4a826c12..be4fb170 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -157,13 +157,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);
@@ -172,11 +172,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));
}
}
@@ -476,7 +480,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:
@@ -542,7 +546,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);
}
}
}
@@ -612,7 +616,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;