aboutsummaryrefslogtreecommitdiff
path: root/lib/gui
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-01-20 14:35:19 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-01-20 14:35:19 +0000
commit9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1 (patch)
tree6be7a641506defe96a73e0279f934ac5670aba81 /lib/gui
parent13b7a9b397f36ca3195aad3702feb3db4cbb2f3e (diff)
downloadenigma2-9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1.tar.gz
enigma2-9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1.zip
- redraw now in idle
- mainloop called from python (could be changed) - clock components manages timer - timer usuable from python
Diffstat (limited to 'lib/gui')
-rw-r--r--lib/gui/ewidgetdesktop.cpp21
-rw-r--r--lib/gui/ewidgetdesktop.h9
-rw-r--r--lib/gui/ewindowstyle.cpp1
3 files changed, 28 insertions, 3 deletions
diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp
index ff913680..bb6c7c39 100644
--- a/lib/gui/ewidgetdesktop.cpp
+++ b/lib/gui/ewidgetdesktop.cpp
@@ -1,5 +1,6 @@
#include <lib/gui/ewidgetdesktop.h>
#include <lib/gui/ewidget.h>
+#include <lib/base/ebase.h>
void eWidgetDesktop::addRootWidget(eWidget *root, int top)
{
@@ -50,6 +51,8 @@ void eWidgetDesktop::recalcClipRegions()
void eWidgetDesktop::invalidate(const gRegion &region)
{
+ if (m_timer && m_dirty_region.empty())
+ m_timer->start(0, 1); // start singleshot redraw timer
m_dirty_region |= region;
}
@@ -67,7 +70,23 @@ void eWidgetDesktop::setDC(gDC *dc)
m_dc = dc;
}
-eWidgetDesktop::eWidgetDesktop(eSize size): m_screen_size(size)
+void eWidgetDesktop::setRedrawTask(eMainloop &ml)
+{
+ if (m_mainloop)
+ {
+ delete m_timer;
+ m_timer = 0;
+ m_mainloop = 0;
+ }
+ m_mainloop = &ml;
+ m_timer = new eTimer(m_mainloop);
+ CONNECT(m_timer->timeout, eWidgetDesktop::paint);
+
+ if (!m_dirty_region.empty())
+ m_timer->start(0, 1);
+}
+
+eWidgetDesktop::eWidgetDesktop(eSize size): m_screen_size(size), m_mainloop(0), m_timer(0)
{
}
diff --git a/lib/gui/ewidgetdesktop.h b/lib/gui/ewidgetdesktop.h
index 42e6b61e..1354a86b 100644
--- a/lib/gui/ewidgetdesktop.h
+++ b/lib/gui/ewidgetdesktop.h
@@ -5,8 +5,10 @@
#include <lib/base/eptrlist.h>
class eWidget;
+class eMainloop;
+class eTimer;
-class eWidgetDesktop
+class eWidgetDesktop: public Object
{
public: // weil debug
eSize m_screen_size;
@@ -22,9 +24,14 @@ public:
void invalidate(const gRegion &region);
void paint();
void setDC(gDC *dc);
+
+ void setRedrawTask(eMainloop &ml);
private:
ePtrList<eWidget> m_root;
void calcWidgetClipRegion(eWidget *widget, gRegion &parent_visible);
+
+ eMainloop *m_mainloop;
+ eTimer *m_timer;
};
#endif
diff --git a/lib/gui/ewindowstyle.cpp b/lib/gui/ewindowstyle.cpp
index 778291c7..8599cfd7 100644
--- a/lib/gui/ewindowstyle.cpp
+++ b/lib/gui/ewindowstyle.cpp
@@ -53,7 +53,6 @@ void eWindowStyleSimple::paintWindowDecoration(eWindow *wnd, gPainter &painter,
void eWindowStyleSimple::paintBackground(gPainter &painter, const ePoint &offset, const eSize &size)
{
- eDebug("eWindowStyleSimple::paintBackground");
painter.setBackgroundColor(m_background_color);
painter.clear();
}