> > The version of viafb I'm using has a few improvements on the one
> > referred to at the beginning of this thread but nothing too major: the
> > only real issue is that you'll very occasionally find you get the
> > opposite field parity due to a race condition.
>
> Feel free to send me any updated patches to viafb, especially if it
> fixes a field parity problem!
OK, when I get a moment. The problem only occurs about 1 in every 20
times you start an application so you don't see it often.
> How do I enable DLOP_FIELD_PARITY? I presume that has to be somewhere in
> the DirectFB initialisation bits of the code. What flags do I want for
> the flip calls?
You shouldn't need to change the flipping (but the most efficient
method would be tripple buffering and no wait).
To enable DLOP_FIELD_PARITY, find where the code sets the
configuration on the video layer. Set the 'options' field of the
layer config to include DLOP_FIELD_PARITY (ensuring that flags
includes DLCONF_OPTIONS) before calling SetConfiguration(). Then call
SetFieldParity(0) on the layer.
Here's how I do it. Note that this is C++/++DFB code so the syntax
won't be exactly the same for you. m_vlayer is the video layer:
DFBDisplayLayerConfig layer_config;
DFBDisplayLayerDescription layer_desc;
m_vlayer.SetCooperativeLevel(DLSCL_EXCLUSIVE);
layer_desc = m_vlayer.GetDescription();
layer_config.flags = (DFBDisplayLayerConfigFlags) (DLCONF_BUFFERMODE |
DLCONF_PIXELFORMAT | DLCONF_OPTIONS);
layer_config.buffermode = DLBM_TRIPLE;
layer_config.pixelformat = DSPF_YV12;
layer_config.options = DLOP_NONE;
if (layer_desc.caps & DLCAPS_FIELD_PARITY)
layer_config.options = DLOP_FIELD_PARITY;
m_vlayer.SetConfiguration(layer_config);
if (layer_desc.caps & DLCAPS_FIELD_PARITY)
m_vlayer.SetFieldParity(0);
Mark
_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users