aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-01-09 20:42:14 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-01-09 20:43:06 +0100
commit04e48eed8c5dfc1e1a642b52ab0d03e40171e86e (patch)
treeb7f5f6367c1a37b2a199394d9fdbaf9584154ee8
parentc352487661e7927d0068ef8fa69765055ff488d8 (diff)
downloadenigma2-04e48eed8c5dfc1e1a642b52ab0d03e40171e86e.tar.gz
enigma2-04e48eed8c5dfc1e1a642b52ab0d03e40171e86e.zip
small fix in spinner handling...
fixes bug #378
-rw-r--r--lib/base/ebase.cpp1
-rw-r--r--lib/base/ebase.h4
-rw-r--r--lib/gdi/grc.cpp8
-rw-r--r--lib/gdi/grc.h1
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();