diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-25 17:18:48 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-25 17:18:48 +0000 |
| commit | 6dcb75c26bbfec04b381bb99d75404f9fe50635d (patch) | |
| tree | b4b0e4e7b92c2d6563a848279cb5b48e7e183f96 /lib/service | |
| parent | 26a6141301937e0ef501b4cd7ae61b4f2293b7e5 (diff) | |
| download | enigma2-6dcb75c26bbfec04b381bb99d75404f9fe50635d.tar.gz enigma2-6dcb75c26bbfec04b381bb99d75404f9fe50635d.zip | |
python object refcount debugging code second try
Diffstat (limited to 'lib/service')
| -rw-r--r-- | lib/service/iservice.h | 11 | ||||
| -rw-r--r-- | lib/service/service.cpp | 2 | ||||
| -rw-r--r-- | lib/service/servicedvb.cpp | 38 | ||||
| -rw-r--r-- | lib/service/servicedvb.h | 4 | ||||
| -rw-r--r-- | lib/service/servicedvbrecord.cpp | 7 | ||||
| -rw-r--r-- | lib/service/servicefs.cpp | 8 | ||||
| -rw-r--r-- | lib/service/servicefs.h | 2 |
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 &); |
