X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/108a8e97174ca4142c6e96d21320086c50eee4e6..73e10b7fbfb0f7beb6dfe8c8a5637d5dd9a049bc:/lib/base/ebase.cpp?ds=sidebyside diff --git a/lib/base/ebase.cpp b/lib/base/ebase.cpp index 1b92995b..7a57d533 100644 --- a/lib/base/ebase.cpp +++ b/lib/base/ebase.cpp @@ -157,7 +157,7 @@ int eMainloop::processOneEvent(unsigned int user_timeout, PyObject **res, PyObje poll_timeout /= 1000; } - if ((user_timeout > 0) && (poll_timeout > user_timeout)) + if ((user_timeout > 0) && (poll_timeout > 0) && ((unsigned int)poll_timeout > user_timeout)) { poll_timeout = user_timeout; return_reason = 1; @@ -200,16 +200,16 @@ int eMainloop::processOneEvent(unsigned int user_timeout, PyObject **res, PyObje { for (int i=0; i < PyList_Size(additional); ++i) { - PyObject *it = PyList_GetItem(additional, i); + PyObject *it = PyList_GET_ITEM(additional, i); if (!PyTuple_Check(it)) eFatal("poll item is not a tuple"); if (PyTuple_Size(it) != 2) eFatal("poll tuple size is not 2"); - int fd = PyObject_AsFileDescriptor(PyTuple_GetItem(it, 0)); + int fd = PyObject_AsFileDescriptor(PyTuple_GET_ITEM(it, 0)); if (fd == -1) eFatal("poll tuple not a filedescriptor"); pfd[nativecount + i].fd = fd; - pfd[nativecount + i].events = PyInt_AsLong(PyTuple_GetItem(it, 1)); + pfd[nativecount + i].events = PyInt_AsLong(PyTuple_GET_ITEM(it, 1)); } } @@ -254,9 +254,10 @@ int eMainloop::processOneEvent(unsigned int user_timeout, PyObject **res, PyObje if (!*res) *res = PyList_New(0); PyObject *it = PyTuple_New(2); - PyTuple_SetItem(it, 0, PyInt_FromLong(pfd[i].fd)); - PyTuple_SetItem(it, 1, PyInt_FromLong(pfd[i].revents)); + PyTuple_SET_ITEM(it, 0, PyInt_FromLong(pfd[i].fd)); + PyTuple_SET_ITEM(it, 1, PyInt_FromLong(pfd[i].revents)); PyList_Append(*res, it); + Py_DECREF(it); } } @@ -332,6 +333,13 @@ int eMainloop::runLoop() PyObject *eMainloop::poll(PyObject *timeout, PyObject *dict) { PyObject *res = 0; + + if (app_quit_now) + { + Py_INCREF(Py_None); + return Py_None; + } + int user_timeout = (timeout == Py_None) ? 0 : PyInt_AsLong(timeout); iterate(user_timeout, &res, dict);