Support turbo2.
[vuplus_dvbapp] / lib / gui / ewidgetdesktop.cpp
index 63aeaac..1951b61 100644 (file)
@@ -7,7 +7,7 @@ extern void dumpRegion(const gRegion &region);
 
 void eWidgetDesktop::addRootWidget(eWidget *root)
 {
-       assert(!root->m_desktop);
+       ASSERT(!root->m_desktop);
        
        int invert_sense = 0;
                /* buffered mode paints back-to-front, while immediate mode is front-to-back. */
@@ -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;
@@ -462,7 +472,7 @@ void eWidgetDesktop::redrawComposition(int notified)
        if (m_comp_mode != cmBuffered)
                return;
        
-       assert(m_screen.m_dc);
+       ASSERT(m_screen.m_dc);
        
        gPainter p(m_screen.m_dc);
        p.resetClip(eRect(ePoint(0, 0), m_screen.m_screen_size));
@@ -511,4 +521,26 @@ void eWidgetDesktop::resize(eSize size)
 {
        m_screen.m_dirty_region = gRegion(eRect(ePoint(0, 0), size));
        m_screen.m_screen_size = size;
+#ifdef USE_LIBVUGLES2
+       gPainter painter(m_screen.m_dc);
+       painter.setView(size);
+#endif
+}
+
+void eWidgetDesktop::sendShow(ePoint point, eSize size)
+{
+       if(m_style_id!=0)
+               return;
+
+       gPainter painter(m_screen.m_dc);
+       painter.sendShow(point, size);
+}
+
+void eWidgetDesktop::sendHide(ePoint point, eSize size)
+{
+       if(m_style_id!=0)
+               return;
+
+       gPainter painter(m_screen.m_dc);
+       painter.sendHide(point, size);
 }