add preStart event and use it to load the cutlist
[enigma2.git] / lib / gui / ewidgetdesktop.cpp
index 09c0fa1bdd53b3c86c48489484efd537a34c462f..98bc1f7dce08334776d40e6002ec6968d21c3ef0 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();
        }
 }
 
@@ -343,12 +350,11 @@ void eWidgetDesktop::setRedrawTask(eMainloop &ml)
 {
        if (m_mainloop)
        {
-               delete m_timer;
                m_timer = 0;
                m_mainloop = 0;
        }
        m_mainloop = &ml;
-       m_timer = new eTimer(m_mainloop);
+       m_timer = eTimer::create(m_mainloop);
        CONNECT(m_timer->timeout, eWidgetDesktop::paint);
        
        if (m_require_redraw)
@@ -375,7 +381,7 @@ void eWidgetDesktop::makeCompatiblePixmap(gPixmap &pm)
        ePtr<gPixmap> target_pixmap;
        m_screen.m_dc->getPixmap(target_pixmap);
        
-       assert(target_pixmap);
+       ASSERT(target_pixmap);
        
        if (target_pixmap->surface && target_pixmap->surface->bpp > 8)
                return;
@@ -399,7 +405,7 @@ void eWidgetDesktop::setCompositionMode(int mode)
                                removeBufferForWidget(*i, l);
 }
 
-eWidgetDesktop::eWidgetDesktop(eSize size): m_mainloop(0), m_timer(0)
+eWidgetDesktop::eWidgetDesktop(eSize size): m_mainloop(0)
 {
        m_screen.m_dirty_region = gRegion(eRect(ePoint(0, 0), size));
        m_screen.m_screen_size = size;
@@ -463,7 +469,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));
@@ -507,3 +513,9 @@ void eWidgetDesktop::clearVisibility(eWidget *widget)
        for (ePtrList<eWidget>::iterator i(widget->m_childs.begin()); i != widget->m_childs.end(); ++i)
                clearVisibility(*i);
 }
+
+void eWidgetDesktop::resize(eSize size)
+{
+       m_screen.m_dirty_region = gRegion(eRect(ePoint(0, 0), size));
+       m_screen.m_screen_size = size;
+}