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