From: Andreas Monzner Date: Wed, 4 Jun 2008 20:43:40 +0000 (+0000) Subject: fix spinner handling X-Git-Tag: 2.6.0~1169 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/8ecfc549ce93bc353d6a64f43a0c25dcd65f860e?hp=d49d7da0bf17411dfa54147307f30d71b4b9a1ed fix spinner handling --- diff --git a/lib/base/ebase.cpp b/lib/base/ebase.cpp index 61219811..62746f4b 100644 --- a/lib/base/ebase.cpp +++ b/lib/base/ebase.cpp @@ -6,6 +6,7 @@ #include #include +#include eSocketNotifier::eSocketNotifier(eMainloop *context, int fd, int requested, bool startnow): context(*context), fd(fd), state(0), requested(requested) { @@ -201,9 +202,14 @@ int eMainloop::processOneEvent(unsigned int twisted_timeout, PyObject **res, ePy if (this == eApp) { + gOpcode op; + op.dc = 0; + op.opcode = gOpcode::flush; + gRC::getInstance()->submit(op); Py_BEGIN_ALLOW_THREADS ret = ::poll(pfd, fdcount, poll_timeout); Py_END_ALLOW_THREADS + } else ret = ::poll(pfd, fdcount, poll_timeout); diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index a46b218c..c8af2457 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -119,7 +119,7 @@ void *gRC::thread() break; else if (o.opcode==gOpcode::notify) need_notify = 1; - else + else if(o.dc) { o.dc->exec(&o); // o.dc is a gDC* filled with grabref... so we must release it here @@ -139,24 +139,21 @@ void *gRC::thread() /* when the main thread is non-idle for a too long time without any display output, we want to display a spinner. */ - - struct timeval time; struct timespec timeout; - gettimeofday(&time, NULL); - timeout.tv_sec = time.tv_sec; - timeout.tv_nsec = time.tv_usec * 1000; - + clock_gettime(CLOCK_REALTIME, &timeout); + if (m_spinner_enabled) + { timeout.tv_nsec += 100*1000*1000; - else - timeout.tv_sec += 2; - /* yes, this is required. */ - if (timeout.tv_nsec > 1000*1000*1000) - { - timeout.tv_nsec -= 1000*1000*1000; - timeout.tv_sec++; + if (timeout.tv_nsec > 1000*1000*1000) + { + timeout.tv_nsec -= 1000*1000*1000; + timeout.tv_sec++; + } } + else + timeout.tv_sec += 2; int idle = 1; @@ -165,8 +162,6 @@ void *gRC::thread() if (eApp && !eApp->isIdle()) idle = 0; } - - pthread_mutex_unlock(&mutex); if (!idle) { @@ -176,6 +171,7 @@ void *gRC::thread() } else disableSpinner(); } + pthread_mutex_unlock(&mutex); #endif } }