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