don't merge pixmaps when it's not required
[enigma2.git] / lib / gui / ewidgetdesktop.cpp
index d8de2aec2ad7d56c6e9b04b8a0c88d94f5a1a397..eaaa81c88ea0f058ee7993f971380378c8de0796 100644 (file)
@@ -18,7 +18,7 @@ void eWidgetDesktop::addRootWidget(eWidget *root)
        
        for (;;)
        {
-               if ((insert_position == m_root.end()) || (invert_sense ^ (insert_position->m_z_position >= root->m_z_position)))
+               if ((insert_position == m_root.end()) || (invert_sense ^ (insert_position->m_z_position < root->m_z_position)))
                {
                        m_root.insert(insert_position, root);
                        break;
@@ -299,14 +299,17 @@ void eWidgetDesktop::makeCompatiblePixmap(gPixmap &pm)
                return;
        }
 
-       ePtr<gDC> pixmap_dc = new gDC(&pm);
-       gPainter pixmap_painter(pixmap_dc);
-       
        ePtr<gPixmap> target_pixmap;
        m_screen.m_dc->getPixmap(target_pixmap);
        
        assert(target_pixmap);
        
+       if (target_pixmap->surface && target_pixmap->surface->bpp > 8)
+               return;
+
+       ePtr<gDC> pixmap_dc = new gDC(&pm);
+       gPainter pixmap_painter(pixmap_dc);
+       
        pixmap_painter.mergePalette(target_pixmap);
 }