ALSA: usb-audio: process pending stop at PCM hw_free and close
authorTakashi Iwai <tiwai@suse.de>
Wed, 21 Nov 2012 07:35:42 +0000 (08:35 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 21 Nov 2012 10:43:58 +0000 (11:43 +0100)
PCM hw_free and close should wait until all the pending stop
operations have been finished.  Basically only PCM trigger callback
should use non-wait calls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/pcm.c

index 4750d3d5c0cc9b0f7b9896af1e0a4ab1aa786188..bc3c9acc68b76000f50c0a50a2e00ce9a3a1ad85 100644 (file)
@@ -446,7 +446,7 @@ static int configure_endpoint(struct snd_usb_substream *subs)
        int ret;
 
        /* format changed */
-       stop_endpoints(subs, false);
+       stop_endpoints(subs, true);
        ret = snd_usb_endpoint_set_params(subs->data_endpoint,
                                          subs->pcm_format,
                                          subs->channels,
@@ -1012,7 +1012,7 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream, int direction)
        struct snd_usb_stream *as = snd_pcm_substream_chip(substream);
        struct snd_usb_substream *subs = &as->substream[direction];
 
-       stop_endpoints(subs, false);
+       stop_endpoints(subs, true);
 
        if (!as->chip->shutdown && subs->interface >= 0) {
                usb_set_interface(subs->dev, subs->interface, 0);