X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6dcb75c26bbfec04b381bb99d75404f9fe50635d..7c9176b37c107c670dae2f587ece3a63bf64a10d:/lib/python/connections.cpp diff --git a/lib/python/connections.cpp b/lib/python/connections.cpp index fd3e2a4b..b54c07b1 100644 --- a/lib/python/connections.cpp +++ b/lib/python/connections.cpp @@ -1,14 +1,15 @@ #include PSignal::PSignal() + :m_destroyed(0) { - m_list = PyList_New(0); - Py_INCREF(m_list); } PSignal::~PSignal() { - Py_DECREF(m_list); + if (m_destroyed) + *m_destroyed = true; + Py_XDECREF(m_list); } void PSignal::callPython(ePyObject tuple) @@ -22,8 +23,12 @@ void PSignal::callPython(ePyObject tuple) } } -PyObject *PSignal::get() +PyObject *PSignal::get(bool steal) { - Py_INCREF(m_list); + if (!steal) { + if (!m_list) + m_list = PyList_New(0); + Py_INCREF(m_list); + } return m_list; }