'Twas brillig, and Tanu Kaskinen at 13/07/11 14:29 did gyre and gimble: >>>> diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c >>>> index 45761a6..15c07a5 100644 >>>> --- a/src/pulsecore/sink.c >>>> +++ b/src/pulsecore/sink.c >>>> @@ -462,8 +462,19 @@ void pa_sink_put(pa_sink* s) { >>>> pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency); >>>> >>>> /* Generally, flags should be initialized via pa_sink_new(). As a >>>> - * special exception we allow volume related flags to be set >>>> - * between _new() and _put(). */ >>>> + * special exception we allow some volume related flags to be set >>>> + * between _new() and _put(). However some are dictated by what >>>> + * callbacks were registered so we set those here. >>>> + * >>>> + * Note: All of these flags set here can change over the life time >>>> + * of the sink. */ >>>> + s->flags &= ~(PA_SINK_HW_VOLUME_CTRL|PA_SINK_HW_MUTE_CTRL|PA_SINK_SYNC_VOLUME|PA_SINK_FLAT_VOLUME); >>> >>> This breaks the "force flat volume" feature of module-virtual-sink. >>> Would it do any harm to leave PA_SINK_FLAT_VOLUME out of this list? >> >> So it does. I'll work something out (probably leaving it out and >> duplicating the flat volume flag setting to the alsa-sink/source code, >> but if I can find something that reduces duplication then all the better). > > Another thing came to my mind: what about having assertions for checking > that none of PA_SINK_HW_VOLUME_CTRL, PA_SINK_HW_MUTE_CTRL or > PA_SINK_SYNC_VOLUME are set? If the sink implementations can't control > the flags anyway, wouldn't it make sense to prevent them from trying? Not really sure where you suggest such a check goes. Do you mean e.g. before the initial call to pa_sink_set_flags_from_callbacks() inside pa_sink_put()? I guess that makes sense as it ensures implementations are not setting things expecting it to do something that is overwritten later. Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]