Hi all,

while looking at the dummy driver to find usable parts for my driver,
I found:

static int snd_dummy_volume_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t
* ucontrol)
{
        snd_card_dummy_t *dummy = _snd_kcontrol_chip(kcontrol);
        unsigned long flags;
        int change, addr = kcontrol->private_value;
        int left, right;

        left = ucontrol->value.integer.value[0] % 101;
        right = ucontrol->value.integer.value[1] % 101;
        spin_lock_irqsave(&dummy->mixer_lock, flags);
        change = dummy->mixer_volume[addr][0] != left &&
                 dummy->mixer_volume[addr][1] != right;
        dummy->mixer_volume[addr][0] = left;
        dummy->mixer_volume[addr][1] = right;
        spin_unlock_irqrestore(&dummy->mixer_lock, flags);
        return change;
}

Shouldn't it be
        change = dummy->mixer_volume[addr][0] != left ||
                 dummy->mixer_volume[addr][1] != right;
instead of
        change = dummy->mixer_volume[addr][0] != left &&
                 dummy->mixer_volume[addr][1] != right;
??

Why only signal a change if *both* channels' values are changed ?
Or is the meaning of the API's "change" return value actually
rather mysterious to me ?

-- 
The Declaration of Software Freedom:
http://freedevelopers.net/freedomdec/index.php


-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone?  Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to