+static bool ConvertSurfaceToFormat(wxIDirectFBSurfacePtr& surface,
+ DFBSurfacePixelFormat format)
+{
+ if ( surface->GetPixelFormat() == format )
+ return true;
+
+ int w, h;
+ surface->GetSize(&w, &h);
+ wxIDirectFBSurfacePtr s = CreateSurfaceWithFormat(w, h, format);
+ if ( !s )
+ return false;
+
+ if ( !s->SetBlittingFlags(DSBLIT_NOFX) )
+ return false;
+ if ( !s->Blit(surface->GetRaw(), NULL, 0, 0) )
+ return false;
+
+ surface = s;
+ return true;
+}
+
+static DFBSurfacePixelFormat DepthToFormat(int depth)
+{
+ switch ( depth )
+ {
+ case 24:
+ return DSPF_RGB24;
+ case 32:
+ // NB: we treat depth=32 as requesting ARGB for consistency with
+ // other ports
+ return DSPF_ARGB;
+ default:
+ wxFAIL_MSG( "unsupported depth requested" );
+ // fall through
+ case -1:
+ return DSPF_UNKNOWN;
+ }
+}
+