X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/cf3e9383de633c9305a950ba5896376b14e43e12..bf976ae7302a8f3e2b6ecde2336a9cbef890720d:/lib/python/python.cpp diff --git a/lib/python/python.cpp b/lib/python/python.cpp index a1ef1508..b5ae4864 100644 --- a/lib/python/python.cpp +++ b/lib/python/python.cpp @@ -1,8 +1,24 @@ #include #include + /* avoid warnigs :) */ +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112L #include extern "C" void init_enigma(); +extern void bsodFatal(); + +DEFINE_REF(TestObj); + +TestObj::TestObj() +{ + eDebug("create %p", this); +} + +TestObj::~TestObj() +{ + eDebug("destroy %p", this); +} #if 0 ePyObject::ePyObject(void *ptr): m_object(ptr) @@ -44,6 +60,8 @@ ePyObject &ePyObject::operator=(void *object) ePython::ePython() { +// Py_VerboseFlag = 1; + Py_Initialize(); init_enigma(); @@ -104,11 +122,15 @@ int ePython::call(PyObject *pFunc, PyObject *pArgs) pValue = PyObject_CallObject(pFunc, pArgs); if (pValue != NULL) { - res = PyInt_AsLong(pValue); + if (PyInt_Check(pValue)) + res = PyInt_AsLong(pValue); + else + res = 0; Py_DECREF(pValue); } else { PyErr_Print(); + bsodFatal(); } } return res; @@ -129,7 +151,6 @@ PyObject *ePython::resolve(const std::string &pythonfile, const std::string &fun pFunc = PyDict_GetItemString(pDict, funcname.c_str()); Py_XINCREF(pFunc); Py_DECREF(pModule); - eDebug("resolved to %p", pFunc); return pFunc; } else {