aboutsummaryrefslogtreecommitdiff
path: root/lib/gui/ewidgetdesktop.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-08-29 19:53:44 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-08-29 19:53:44 +0000
commitd85ab0bcd4dd553144faa3454c319ae3c54f2f9d (patch)
treed6f6bb0e278aff204114ae9b6cf0739b60a74545 /lib/gui/ewidgetdesktop.cpp
parent059f7f9c3ef10f29ac0c4f87c380854e1185e1e2 (diff)
downloadenigma2-d85ab0bcd4dd553144faa3454c319ae3c54f2f9d.tar.gz
enigma2-d85ab0bcd4dd553144faa3454c319ae3c54f2f9d.zip
- create DCs for buffered mode
Diffstat (limited to 'lib/gui/ewidgetdesktop.cpp')
-rw-r--r--lib/gui/ewidgetdesktop.cpp24
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);
+ }
+}