X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2Fconnections.h;h=b4cd1c7996452d09cdd3700861ce1458130a2129;hp=3df7b565cc7643e8f98d2eabb0bc038d46c564af;hb=1a2a0e2f94f8f9ba64b1e2d11b42bec88ed612d0;hpb=9f9c513165bbcae496b79656304e60bf74557af4 diff --git a/lib/python/connections.h b/lib/python/connections.h index 3df7b56..b4cd1c7 100644 --- a/lib/python/connections.h +++ b/lib/python/connections.h @@ -3,41 +3,20 @@ #include - /* avoid warnigs :) */ -#include -#undef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 200112L -#include #include class PSignal { +protected: + ePyObject m_list; public: - PyObject *m_list; -public: - PSignal() - { - m_list = PyList_New(0); - Py_INCREF(m_list); - } - ~PSignal() - { - Py_DECREF(m_list); - } - - void callPython(PyObject *tuple) - { - int size = PyList_Size(m_list); - int i; - for (i=0; i class PSignal0: public PSignal, public Signal0 { public: R operator()() { - PyObject *pArgs = PyTuple_New(0); - callPython(pArgs); - Py_DECREF(pArgs); + if (m_list) + { + PyObject *pArgs = PyTuple_New(0); + callPython(pArgs); + Org_Py_DECREF(pArgs); + } return Signal0::operator()(); } }; @@ -64,10 +51,13 @@ class PSignal1: public PSignal, public Signal1 public: R operator()(V0 a0) { - PyObject *pArgs = PyTuple_New(1); - PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); - callPython(pArgs); - Py_DECREF(pArgs); + if (m_list) + { + PyObject *pArgs = PyTuple_New(1); + PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); + callPython(pArgs); + Org_Py_DECREF(pArgs); + } return Signal1::operator()(a0); } }; @@ -78,11 +68,14 @@ class PSignal2: public PSignal, public Signal2 public: R operator()(V0 a0, V1 a1) { - PyObject *pArgs = PyTuple_New(2); - PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); - PyTuple_SET_ITEM(pArgs, 1, PyFrom(a1)); - callPython(pArgs); - Py_DECREF(pArgs); + if (m_list) + { + PyObject *pArgs = PyTuple_New(2); + PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); + PyTuple_SET_ITEM(pArgs, 1, PyFrom(a1)); + callPython(pArgs); + Org_Py_DECREF(pArgs); + } return Signal2::operator()(a0, a1); } };