]> git.saurik.com Git - wxWidgets.git/blobdiff - src/dfb/wrapdfb.cpp
simplified #ifs around the code
[wxWidgets.git] / src / dfb / wrapdfb.cpp
index 873f040cdefac3b135e67b7ead116a94f5b38e0e..afd6ee064b0e8a57d1fa7bfbe790dfbd5cbeebcf 100644 (file)
@@ -116,7 +116,8 @@ int wxIDirectFBSurface::GetDepth()
     return DFB_BITS_PER_PIXEL(format);
 }
 
-wxIDirectFBSurfacePtr wxIDirectFBSurface::CreateCompatible(const wxSize& sz)
+wxIDirectFBSurfacePtr
+wxIDirectFBSurface::CreateCompatible(const wxSize& sz, int flags)
 {
     wxSize size(sz);
     if ( size == wxDefaultSize )
@@ -135,6 +136,17 @@ wxIDirectFBSurfacePtr wxIDirectFBSurface::CreateCompatible(const wxSize& sz)
     desc.width = size.x;
     desc.height = size.y;
 
+    // filter out caps that don't make sense for a new compatible surface:
+    int caps = desc.caps;
+    caps &= ~DSCAPS_PRIMARY;
+    caps &= ~DSCAPS_SUBSURFACE;
+    if ( flags & CreateCompatible_NoBackBuffer )
+    {
+        caps &= ~DSCAPS_DOUBLE;
+        caps &= ~DSCAPS_TRIPLE;
+    }
+    desc.caps = (DFBSurfaceCapabilities)caps;
+
     wxIDirectFBSurfacePtr snew(wxIDirectFB::Get()->CreateSurface(&desc));
     if ( !snew )
         return NULL;
@@ -166,3 +178,17 @@ wxIDirectFBSurfacePtr wxIDirectFBSurface::Clone()
 
     return snew;
 }
+
+bool wxIDirectFBSurface::Flip(const DFBRegion *region, int flags)
+{
+    return Check(m_ptr->Flip(m_ptr, region, (DFBSurfaceFlipFlags)flags));
+}
+
+bool wxIDirectFBSurface::FlipToFront(const DFBRegion *region)
+{
+    // Blit to the front buffer instead of exchanging front and back ones.
+    // Always doing this ensures that back and front buffer have same content
+    // and so painting to the back buffer will never lose any previous
+    // drawings:
+    return Flip(region, DSFLIP_BLIT);
+}