ewidgetdesktop: don't abort if no target_pixmap is set
[vuplus_dvbapp] / lib / gui / ewidgetdesktop.cpp
index 05b4ec4..08bd047 100644 (file)
@@ -145,6 +145,9 @@ void eWidgetDesktop::recalcClipRegions(eWidget *root)
                                createBufferForWidget(root, 0);
 
                        comp = root->m_comp_buffer[i]; /* it might have changed. */
+                       
+                       if (!comp) 
+                               continue;  /* WAIT, don't we need to invalidate,whatever */
 
                                        /* CHECKME: don't we need to recalculate everything? after all, our buffer has changed and is likely to be cleared */
                        gRegion visible_before = root->m_visible_with_childs;
@@ -329,6 +332,10 @@ void eWidgetDesktop::paint()
        if (m_comp_mode == cmBuffered)
        {
 //             redrawComposition(0);
+       } else
+       {
+               gPainter painter(m_screen.m_dc);
+               painter.flush();
        }
 }
 
@@ -374,7 +381,10 @@ void eWidgetDesktop::makeCompatiblePixmap(gPixmap &pm)
        ePtr<gPixmap> target_pixmap;
        m_screen.m_dc->getPixmap(target_pixmap);
        
-       ASSERT(target_pixmap);
+       if (!target_pixmap) {
+               eDebug("no target pixmap! assuming bpp > 8 for accelerated graphics.");
+               return;
+       }
        
        if (target_pixmap->surface && target_pixmap->surface->bpp > 8)
                return;