aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-25 17:18:48 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-25 17:18:48 +0000
commit6dcb75c26bbfec04b381bb99d75404f9fe50635d (patch)
treeb4b0e4e7b92c2d6563a848279cb5b48e7e183f96 /lib/service
parent26a6141301937e0ef501b4cd7ae61b4f2293b7e5 (diff)
downloadenigma2-6dcb75c26bbfec04b381bb99d75404f9fe50635d.tar.gz
enigma2-6dcb75c26bbfec04b381bb99d75404f9fe50635d.zip
python object refcount debugging code second try
Diffstat (limited to 'lib/service')
-rw-r--r--lib/service/iservice.h11
-rw-r--r--lib/service/service.cpp2
-rw-r--r--lib/service/servicedvb.cpp38
-rw-r--r--lib/service/servicedvb.h4
-rw-r--r--lib/service/servicedvbrecord.cpp7
-rw-r--r--lib/service/servicefs.cpp8
-rw-r--r--lib/service/servicefs.h2
7 files changed, 35 insertions, 37 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h
index 1dd419c1..25935b2f 100644
--- a/lib/service/iservice.h
+++ b/lib/service/iservice.h
@@ -460,7 +460,7 @@ class iCueSheet: public iObject
public:
/* returns a list of (pts, what)-tuples */
virtual PyObject *getCutList() = 0;
- virtual void setCutList(PyObject *list) = 0;
+ virtual void setCutList(SWIG_PYOBJECT(ePyObject) list) = 0;
virtual void setCutListEnable(int enable) = 0;
enum { cutIn = 0, cutOut = 1, cutMark = 2 };
};
@@ -473,7 +473,7 @@ class PyList;
class iSubtitleOutput: public iObject
{
public:
- virtual RESULT enableSubtitles(eWidget *parent, PyObject *entry)=0;
+ virtual RESULT enableSubtitles(eWidget *parent, SWIG_PYOBJECT(ePyObject) entry)=0;
virtual RESULT disableSubtitles(eWidget *parent)=0;
virtual PyObject *getSubtitleList()=0;
virtual PyObject *getCachedSubtitle()=0;
@@ -575,7 +575,12 @@ public:
TEMPLATE_TYPEDEF(ePtr<iRecordableService>, iRecordableServicePtr);
-PyObject *PyFrom(ePtr<iRecordableService>&); // implemented in servicedvbrecord.cpp
+extern PyObject *New_iRecordableServicePtr(const ePtr<iRecordableService> &ref); // defined in enigma_python.i
+
+inline PyObject *PyFrom(ePtr<iRecordableService> &c)
+{
+ return New_iRecordableServicePtr(c);
+}
// TEMPLATE_TYPEDEF(std::list<eServiceReference>, eServiceReferenceList);
diff --git a/lib/service/service.cpp b/lib/service/service.cpp
index 8ac7ebd4..181ec22f 100644
--- a/lib/service/service.cpp
+++ b/lib/service/service.cpp
@@ -4,7 +4,7 @@
#include <lib/service/service.h>
#include <lib/base/init_num.h>
#include <lib/base/init.h>
-#include <Python.h>
+#include <lib/python/python.h>
eServiceReference::eServiceReference(const std::string &string)
{
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 71c2ae60..627ccec0 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -406,7 +406,7 @@ RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list, bool sort
// unknown format string chars are returned as python None values !
PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
{
- PyObject *ret=0;
+ ePyObject ret;
std::list<eServiceReference> tmplist;
int retcount=1;
@@ -428,10 +428,10 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
for (int cnt=0; cnt < services; ++cnt)
{
eServiceReference &ref=*it++;
- PyObject *tuple = retcount > 1 ? PyTuple_New(retcount) : 0;
+ ePyObject tuple = retcount > 1 ? PyTuple_New(retcount) : 0;
for (int i=0; i < retcount; ++i)
{
- PyObject *tmp=0;
+ ePyObject tmp;
switch(format[i])
{
case 'R': // service reference (swig)object
@@ -478,7 +478,7 @@ PyObject *eDVBServiceList::getContent(const char* format, bool sorted)
PyList_SET_ITEM(ret, cnt, tuple);
}
}
- return ret ? ret : PyList_New(0);
+ return ret ? (PyObject*)ret : (PyObject*)PyList_New(0);
}
RESULT eDVBServiceList::getNext(eServiceReference &ref)
@@ -1383,7 +1383,7 @@ int eDVBServiceBase::getFrontendInfo(int w)
PyObject *eDVBServiceBase::getFrontendData(bool original)
{
- PyObject *ret=0;
+ ePyObject ret;
eUsePtr<iDVBChannel> channel;
if(!m_service_handler.getChannel(channel))
@@ -1401,8 +1401,8 @@ PyObject *eDVBServiceBase::getFrontendData(bool original)
eDVBFrontendParametersSatellite osat;
if (!feparm->getDVBS(osat))
{
- void PutToDict(PyObject *, const char*, long);
- void PutToDict(PyObject *, const char*, const char*);
+ void PutToDict(ePyObject &, const char*, long);
+ void PutToDict(ePyObject &, const char*, const char*);
PutToDict(ret, "orbital_position", osat.orbital_position);
const char *tmp = "UNKNOWN";
switch(osat.polarisation)
@@ -1526,11 +1526,11 @@ RESULT eDVBServicePlay::activateTimeshift()
PyObject *eDVBServicePlay::getCutList()
{
- PyObject *list = PyList_New(0);
+ ePyObject list = PyList_New(0);
for (std::multiset<struct cueEntry>::iterator i(m_cue_entries.begin()); i != m_cue_entries.end(); ++i)
{
- PyObject *tuple = PyTuple_New(2);
+ ePyObject tuple = PyTuple_New(2);
PyTuple_SetItem(tuple, 0, PyLong_FromLongLong(i->where));
PyTuple_SetItem(tuple, 1, PyInt_FromLong(i->what));
PyList_Append(list, tuple);
@@ -1540,7 +1540,7 @@ PyObject *eDVBServicePlay::getCutList()
return list;
}
-void eDVBServicePlay::setCutList(PyObject *list)
+void eDVBServicePlay::setCutList(ePyObject list)
{
if (!PyList_Check(list))
return;
@@ -1551,7 +1551,7 @@ void eDVBServicePlay::setCutList(PyObject *list)
for (i=0; i<size; ++i)
{
- PyObject *tuple = PyList_GetItem(list, i);
+ ePyObject tuple = PyList_GetItem(list, i);
if (!PyTuple_Check(tuple))
{
eDebug("non-tuple in cutlist");
@@ -1562,7 +1562,7 @@ void eDVBServicePlay::setCutList(PyObject *list)
eDebug("cutlist entries need to be a 2-tuple");
continue;
}
- PyObject *ppts = PyTuple_GetItem(tuple, 0), *ptype = PyTuple_GetItem(tuple, 1);
+ ePyObject ppts = PyTuple_GetItem(tuple, 0), ptype = PyTuple_GetItem(tuple, 1);
if (!(PyLong_Check(ppts) && PyInt_Check(ptype)))
{
eDebug("cutlist entries need to be (pts, type)-tuples (%d %d)", PyLong_Check(ppts), PyInt_Check(ptype));
@@ -1984,12 +1984,12 @@ void eDVBServicePlay::cutlistToCuesheet()
m_cue->commitSpans();
}
-RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, PyObject *tuple)
+RESULT eDVBServicePlay::enableSubtitles(eWidget *parent, ePyObject tuple)
{
if (m_subtitle_widget)
disableSubtitles(parent);
- PyObject *entry = 0;
+ ePyObject entry;
int tuplesize = PyTuple_Size(tuple);
int type = 0;
@@ -2109,7 +2109,7 @@ PyObject *eDVBServicePlay::getCachedSubtitle()
{
unsigned int data = (unsigned int)tmp;
int pid = (data&0xFFFF0000)>>16;
- PyObject *tuple = PyTuple_New(4);
+ ePyObject tuple = PyTuple_New(4);
eDVBServicePMTHandler::program program;
eDVBServicePMTHandler &h = m_timeshift_active ? m_service_handler_timeshift : m_service_handler;
if (!h.getProgramInfo(program))
@@ -2137,7 +2137,7 @@ PyObject *eDVBServicePlay::getSubtitleList()
return Py_None;
}
- PyObject *l = PyList_New(0);
+ ePyObject l = PyList_New(0);
std::set<int> added_ttx_pages;
std::set<eDVBServicePMTHandler::subtitleStream> &subs =
@@ -2161,7 +2161,7 @@ PyObject *eDVBServicePlay::getSubtitleList()
int hash = magazine_number << 8 | page_number;
if (added_ttx_pages.find(hash) == added_ttx_pages.end())
{
- PyObject *tuple = PyTuple_New(5);
+ ePyObject tuple = PyTuple_New(5);
PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(1));
PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(it->pid));
PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(page_number));
@@ -2176,7 +2176,7 @@ PyObject *eDVBServicePlay::getSubtitleList()
case 0x10 ... 0x13:
case 0x20 ... 0x23: // dvb subtitles
{
- PyObject *tuple = PyTuple_New(5);
+ ePyObject tuple = PyTuple_New(5);
PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(0));
PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(it->pid));
PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(it->composition_page_id));
@@ -2198,7 +2198,7 @@ PyObject *eDVBServicePlay::getSubtitleList()
int hash = magazine_number << 8 | page_number;
if (added_ttx_pages.find(hash) == added_ttx_pages.end())
{
- PyObject *tuple = PyTuple_New(5);
+ ePyObject tuple = PyTuple_New(5);
PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(1));
PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(it->pid));
PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(page_number));
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index 27f48b57..979a9cab 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -156,11 +156,11 @@ public:
// iCueSheet
PyObject *getCutList();
- void setCutList(PyObject *);
+ void setCutList(SWIG_PYOBJECT(ePyObject));
void setCutListEnable(int enable);
// iSubtitleOutput
- RESULT enableSubtitles(eWidget *parent, PyObject *entry);
+ RESULT enableSubtitles(eWidget *parent, SWIG_PYOBJECT(ePyObject) entry);
RESULT disableSubtitles(eWidget *parent);
PyObject *getSubtitleList();
PyObject *getCachedSubtitle();
diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp
index 6164ca17..d3c3704b 100644
--- a/lib/service/servicedvbrecord.cpp
+++ b/lib/service/servicedvbrecord.cpp
@@ -5,13 +5,6 @@
DEFINE_REF(eDVBServiceRecord);
-extern PyObject *New_iRecordableServicePtr(const ePtr<iRecordableService> &ref); // defined in enigma_python.i
-
-PyObject *PyFrom(ePtr<iRecordableService> &c)
-{
- return New_iRecordableServicePtr(c);
-}
-
eDVBServiceRecord::eDVBServiceRecord(const eServiceReferenceDVB &ref): m_ref(ref)
{
CONNECT(m_service_handler.serviceEvent, eDVBServiceRecord::serviceEvent);
diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp
index 16948854..b0023212 100644
--- a/lib/service/servicefs.cpp
+++ b/lib/service/servicefs.cpp
@@ -186,7 +186,7 @@ RESULT eServiceFS::getContent(std::list<eServiceReference> &list, bool sorted)
// unknown format string chars are returned as python None values !
PyObject *eServiceFS::getContent(const char* format, bool sorted)
{
- PyObject *ret=0;
+ ePyObject ret;
std::list<eServiceReference> tmplist;
int retcount=1;
@@ -208,10 +208,10 @@ PyObject *eServiceFS::getContent(const char* format, bool sorted)
for (int cnt=0; cnt < services; ++cnt)
{
eServiceReference &ref=*it++;
- PyObject *tuple = retcount > 1 ? PyTuple_New(retcount) : 0;
+ ePyObject tuple = retcount > 1 ? PyTuple_New(retcount) : 0;
for (int i=0; i < retcount; ++i)
{
- PyObject *tmp=0;
+ ePyObject tmp;
switch(format[i])
{
case 'R': // service reference (swig)object
@@ -258,7 +258,7 @@ PyObject *eServiceFS::getContent(const char* format, bool sorted)
PyList_SET_ITEM(ret, cnt, tuple);
}
}
- return ret ? ret : PyList_New(0);
+ return ret ? (PyObject*)ret : (PyObject*)PyList_New(0);
}
RESULT eServiceFS::getNext(eServiceReference &ptr)
diff --git a/lib/service/servicefs.h b/lib/service/servicefs.h
index abd10f37..479718d8 100644
--- a/lib/service/servicefs.h
+++ b/lib/service/servicefs.h
@@ -35,7 +35,7 @@ public:
virtual ~eServiceFS();
RESULT getContent(std::list<eServiceReference> &list, bool sorted=false);
- RESULT getContent(PyObject *list, bool sorted=false);
+ RESULT getContent(SWIG_PYOBJECT(ePyObject) list, bool sorted=false);
PyObject *getContent(const char *format, bool sorted=false);
RESULT getNext(eServiceReference &ptr);
int compareLessEqual(const eServiceReference &, const eServiceReference &);