I am working on implementing Mixers and I have come across some behavior
that I find perplexing.  (I am using DirectFB 1.0.1, but this is still
true in 1.1.1)

 

When a new configuration is passed in to a Mixer to be set, the
configuration flags are tested against the current configuration's flags
and not the description's flags.  



So if we follow the code, this is what happens:

When a configuration is passed in, it is saved.  When a new
configuration is passed in, it first gets the last configuration
(dfb_screen_get_mixer_config) then patches this with the requested
config in PatchMixerConfig.  The first statement in PatchMixerConfig
checks to see if any flags are set in this configuration that weren't
set in the last configuration.  If there are, DFB_UNSUPPORTED is
immediately returned.

 

So if someone sets the visible layer level, then the stored
configuration flags would just have DSMCONF_LEVEL.  If they then set the
visible layers later in the program by specifying a set
(DSMCONF_LAYERS), the configuration would fail because the
DSMCONF_LAYERS flag isn't set in the previous configuration.  Encoders
work on a similar basis as the Mixers.  I would expect this to check the
requested configuration flags against the description flags, but it
doesn't.  Layers do it this way.  When trying to set the source color
key, it first checks to see if that description flag is set before
proceeding.

 

What is going on here?  

Is this the desired behavior? 

What am I missing?

 

Bryce

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to