diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2010-01-09 20:42:14 +0100 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-01-09 20:43:06 +0100 |
| commit | 04e48eed8c5dfc1e1a642b52ab0d03e40171e86e (patch) | |
| tree | b7f5f6367c1a37b2a199394d9fdbaf9584154ee8 /lib | |
| parent | c352487661e7927d0068ef8fa69765055ff488d8 (diff) | |
| download | enigma2-04e48eed8c5dfc1e1a642b52ab0d03e40171e86e.tar.gz enigma2-04e48eed8c5dfc1e1a642b52ab0d03e40171e86e.zip | |
small fix in spinner handling...
fixes bug #378
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/base/ebase.cpp | 1 | ||||
| -rw-r--r-- | lib/base/ebase.h | 4 | ||||
| -rw-r--r-- | lib/gdi/grc.cpp | 8 | ||||
| -rw-r--r-- | lib/gdi/grc.h | 1 |
4 files changed, 12 insertions, 2 deletions
diff --git a/lib/base/ebase.cpp b/lib/base/ebase.cpp index 313732ab..5bafe732 100644 --- a/lib/base/ebase.cpp +++ b/lib/base/ebase.cpp @@ -225,6 +225,7 @@ int eMainloop::processOneEvent(unsigned int twisted_timeout, PyObject **res, ePy } m_is_idle = 1; + ++m_idle_count; if (this == eApp) { diff --git a/lib/base/ebase.h b/lib/base/ebase.h index 524052bd..c69133f6 100644 --- a/lib/base/ebase.h +++ b/lib/base/ebase.h @@ -195,6 +195,7 @@ class eMainloop int processOneEvent(unsigned int user_timeout, PyObject **res=0, ePyObject additional=ePyObject()); int retval; int m_is_idle; + int m_idle_count; eSocketNotifier *m_inActivate; int m_interrupt_requested; @@ -210,7 +211,7 @@ public: #endif eMainloop() - :app_quit_now(0),loop_level(0),retval(0), m_is_idle(0), m_inActivate(0), m_interrupt_requested(0) + :app_quit_now(0),loop_level(0),retval(0), m_is_idle(0), m_idle_count(0), m_inActivate(0), m_interrupt_requested(0) { existing_loops.push_back(this); } @@ -240,6 +241,7 @@ public: /* m_is_idle needs to be atomic, but it doesn't really matter much, as it's read-only from outside */ int isIdle() { return m_is_idle; } + int idleCount() { return m_idle_count; } }; /** diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index 1f1b06a0..dff6b059 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -164,7 +164,13 @@ void *gRC::thread() if (pthread_cond_timedwait(&cond, &mutex, &timeout) == ETIMEDOUT) { if (eApp && !eApp->isIdle()) - idle = 0; + { + int idle_count = eApp->idleCount(); + if (idle_count == m_prev_idle_count) + idle = 0; + else + m_prev_idle_count = idle_count; + } } if (!idle) diff --git a/lib/gdi/grc.h b/lib/gdi/grc.h index 5d0106b3..3b8201ad 100644 --- a/lib/gdi/grc.h +++ b/lib/gdi/grc.h @@ -176,6 +176,7 @@ class gRC: public iObject, public Object ePtr<gCompositingData> m_compositing; + int m_prev_idle_count; public: gRC(); virtual ~gRC(); |
