display spinner after 2 seconds, not 500ms.
[enigma2.git] / lib / gdi / gfbdc.cpp
index a1f4c981adff3309b401a62ed868f6b95ff4881d..871ccd2313e50b44a2efad9c6574452fc166fe2f 100644 (file)
@@ -2,7 +2,6 @@
 
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
-#include <lib/base/econfig.h>
 
 #include <lib/gdi/accel.h>
 
@@ -34,23 +33,28 @@ gFBDC::gFBDC()
        
        surface.data_phys = 50*1024*1024; // FIXME
        
-       surface_back.type = 0;
-       surface_back.x = 720;
-       surface_back.y = 576;
-       surface_back.bpp = 32;
-       surface_back.bypp = 4;
-       surface_back.stride = fb->Stride();
-       surface_back.offset = surface.y;
-
        int fb_size = surface.stride * surface.y;
 
-       surface_back.data = fb->lfb + fb_size;
-       surface_back.data_phys = surface.data_phys + fb_size;
+       if (fb->getNumPages() > 1)
+       {
+               m_enable_double_buffering = 1;
+               surface_back.type = 0;
+               surface_back.x = 720;
+               surface_back.y = 576;
+               surface_back.bpp = 32;
+               surface_back.bypp = 4;
+               surface_back.stride = fb->Stride();
+               surface_back.offset = surface.y;
+               surface_back.data = fb->lfb + fb_size;
+               surface_back.data_phys = surface.data_phys + fb_size;
        
-       fb_size *= 2;
+               fb_size *= 2;
+       } else
+               m_enable_double_buffering = 0;
        
        eDebug("%dkB available for acceleration surfaces.", (fb->Available() - fb_size)/1024);
-       
+       eDebug("resolution: %d x %d x %d (stride: %d)", surface.x, surface.y, surface.bpp, fb->Stride());
+
        if (gAccel::getInstance())
                gAccel::getInstance()->setAccelMemorySpace(fb->lfb + fb_size, surface.data_phys + fb_size, fb->Available() - fb_size);
        
@@ -139,11 +143,14 @@ void gFBDC::exec(gOpcode *o)
        }
        case gOpcode::flip:
        {
-               gSurface s(surface);
-               surface = surface_back;
-               surface_back = s;
+               if (m_enable_double_buffering)
+               {
+                       gSurface s(surface);
+                       surface = surface_back;
+                       surface_back = s;
                
-               fb->setOffset(surface_back.offset);
+                       fb->setOffset(surface_back.offset);
+               }
                break;
        }
        case gOpcode::waitVSync:
@@ -199,19 +206,13 @@ void gFBDC::setGamma(int g)
 
 void gFBDC::saveSettings()
 {
-       eConfig::getInstance()->setKey("/ezap/osd/alpha", alpha);
-       eConfig::getInstance()->setKey("/ezap/osd/gamma", gamma);
-       eConfig::getInstance()->setKey("/ezap/osd/brightness", brightness);
 }
 
 void gFBDC::reloadSettings()
 {
-       if (eConfig::getInstance()->getKey("/ezap/osd/alpha", alpha))
-               alpha=255;
-       if (eConfig::getInstance()->getKey("/ezap/osd/gamma", gamma))
-               gamma=128;
-       if (eConfig::getInstance()->getKey("/ezap/osd/brightness", brightness))
-               brightness=128;
+       alpha=255;
+       gamma=128;
+       brightness=128;
 
        calcRamp();
        setPalette();