diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-01-20 14:35:19 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-01-20 14:35:19 +0000 |
| commit | 9202d4248dd7df2f6e5eb53b4154c8297ec9b1d1 (patch) | |
| tree | 6be7a641506defe96a73e0279f934ac5670aba81 /lib/gui/ewidgetdesktop.cpp | |
| parent | 13b7a9b397f36ca3195aad3702feb3db4cbb2f3e (diff) | |
| download | enigma2-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/ewidgetdesktop.cpp')
| -rw-r--r-- | lib/gui/ewidgetdesktop.cpp | 21 |
1 files changed, 20 insertions, 1 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 ®ion) { + 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) { } |
