diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-08-29 19:53:44 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-08-29 19:53:44 +0000 |
| commit | d85ab0bcd4dd553144faa3454c319ae3c54f2f9d (patch) | |
| tree | d6f6bb0e278aff204114ae9b6cf0739b60a74545 /lib/gui/ewidgetdesktop.cpp | |
| parent | 059f7f9c3ef10f29ac0c4f87c380854e1185e1e2 (diff) | |
| download | enigma2-d85ab0bcd4dd553144faa3454c319ae3c54f2f9d.tar.gz enigma2-d85ab0bcd4dd553144faa3454c319ae3c54f2f9d.zip | |
- create DCs for buffered mode
Diffstat (limited to 'lib/gui/ewidgetdesktop.cpp')
| -rw-r--r-- | lib/gui/ewidgetdesktop.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/gui/ewidgetdesktop.cpp b/lib/gui/ewidgetdesktop.cpp index c820610e..d4a02010 100644 --- a/lib/gui/ewidgetdesktop.cpp +++ b/lib/gui/ewidgetdesktop.cpp @@ -171,6 +171,12 @@ void eWidgetDesktop::paint() if (m_comp_mode == cmImmediate) paintBackground(&m_screen); + + if (m_comp_mode == cmBuffered) + { + eDebug("redraw composition"); + redrawComposition(); + } } void eWidgetDesktop::setDC(gDC *dc) @@ -240,7 +246,7 @@ eWidgetDesktop::eWidgetDesktop(eSize size): m_mainloop(0), m_timer(0) eWidgetDesktop::~eWidgetDesktop() { - /* destroy all buffer */ + /* destroy all buffers */ setCompositionMode(-1); } @@ -254,7 +260,8 @@ void eWidgetDesktop::createBufferForWidget(eWidget *widget) comp->m_position = bbox.topLeft(); comp->m_dirty_region = gRegion(eRect(ePoint(0, 0), bbox.size())); comp->m_screen_size = bbox.size(); -// comp->m_dc = new .. ; + /* TODO: configurable bit depth. */ + comp->m_dc = new gDC(new gPixmap(comp->m_screen_size, 32)); } void eWidgetDesktop::removeBufferForWidget(eWidget *widget) @@ -265,3 +272,16 @@ void eWidgetDesktop::removeBufferForWidget(eWidget *widget) widget->m_comp_buffer = 0; } } + +void eWidgetDesktop::redrawComposition() +{ + gPainter p(m_screen.m_dc); + + for (ePtrList<eWidget>::iterator i(m_root.begin()); i != m_root.end(); ++i) + { + ePtr<gPixmap> pm; + ASSERT(i->m_comp_buffer); + i->m_comp_buffer->m_dc->getPixmap(pm); + p.blit(pm, i->m_comp_buffer->m_position, eRect(), gPixmap::blitAlphaTest); + } +} |
