On Sat, Nov 12, 2005 at 06:37:55PM +0530, Sourath Roy wrote:
> Hello,
> 
> I have couple of questions on dfb CooperativeLevels and SurfaceCapability
> settings.
> 
> If IDirectFB::SetCooperativeLevel() is called with DFSCL_FULLSCREEN and then
> a primary surface is created with no specific settings for DSCAPS_SYSTEMONLY
> or DSCAPS_VIDEOONLY, the capabilities are defaulted to VIDEOONLY. Under such
> condition, the drawing on primary surface is visible without any need of
> calling IDirectFBSurface::Flip().
> 
> This behavior changes when SetCooperativeLevel is called with
> DFSCL_FULLSCREEN and then primary surface is created with capability setting
> DSCAPS_SYSTEMONLY. To my understanding, the FrontBuffer policy is still
> defaulted to VIDEOONLY but the BackBuffoer policy becomes SYSTEMONLY. Under
> this condition, Flip() needs to be done to make drawing visible - BackBuffer
> -> FrontBuffer.
> 
> What causes this difference?

There should be no difference with Flip() behaviour from just changing 
DSCAPS_SYSTEMONLY or DSCAPS_VIDEOONLY.

This is the actual code that selects the buffermode:

if (caps & DSCAPS_TRIPLE) {
     if (caps & DSCAPS_SYSTEMONLY)
          return DFB_UNSUPPORTED;
     config.buffermode = DLBM_TRIPLE;
} else if (caps & DSCAPS_DOUBLE) {
     if (caps & DSCAPS_SYSTEMONLY)
          config.buffermode = DLBM_BACKSYSTEM;
     else
          config.buffermode = DLBM_BACKVIDEO;
} else
     config.buffermode = DLBM_FRONTONLY;

As you can see the difference comes from DSCAPS_DOUBLE or DSCAPS_TRIPLE.

-- 
Ville Syrjälä
[EMAIL PROTECTED]
http://www.sci.fi/~syrjala/

_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to