ALSA: hda - Fix missing call of cmd flush in capture volume put callback
authorTakashi Iwai <tiwai@suse.de>
Tue, 22 Jan 2013 14:18:17 +0000 (15:18 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Jan 2013 14:18:17 +0000 (15:18 +0100)
The capture volume put callback may call the node selection change,
and its actual call won't be triggered unless flushed.  In general,
we always need to call both snd_hda_codec_flush_amp_cache() and
snd_hda_codec_flush_cmd_cache() at the same place...

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c

index 374fd6c6558bf6cdb93128f312ceb48e0b288dc8..b301952dc081077fda49a38d3addcda10f434483 100644 (file)
@@ -2840,6 +2840,7 @@ static int cap_put_caller(struct snd_kcontrol *kcontrol,
        codec->cached_write = 0;
        mutex_unlock(&codec->control_mutex);
        snd_hda_codec_flush_amp_cache(codec); /* flush the updates */
+       snd_hda_codec_flush_cmd_cache(codec);
        if (err >= 0 && spec->cap_sync_hook)
                spec->cap_sync_hook(codec, ucontrol);
        return err;