ALSA: pcm: Workaround for weird PulseAudio behavior on rewind error
authorTakashi Iwai <tiwai@suse.de>
Wed, 3 Jan 2018 14:16:30 +0000 (15:16 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Jan 2018 08:45:19 +0000 (09:45 +0100)
commitef810a3d7d4e5c3d5a84e1169157adc11f81c6cd
tree9596788182f33c7690ff06248e9b30311d197be5
parentf1069cfedae62190bc058a4c372fa60bcf37f75c
ALSA: pcm: Workaround for weird PulseAudio behavior on rewind error

commit fb51f1cd06f9ced7b7085a2a4636375d520431ca upstream.

The commit 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is
updated") introduced the possible error code returned from the PCM
rewind ioctl.  Basically the change was for handling the indirect PCM
more correctly, but ironically, it caused rather a side-effect:
PulseAudio gets pissed off when receiving an error from rewind, throws
everything away and stops processing further, resulting in the
silence.

It's clearly a failure in the application side, so the best would be
to fix that bug in PA.  OTOH, PA is mostly the only user of the rewind
feature, so it's not good to slap the sole customer.

This patch tries to mitigate the situation: instead of returning an
error, now the rewind ioctl returns zero when the driver can't rewind.
It indicates that no rewind was performed, so the behavior is
consistent, at least.

Fixes: 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is updated")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/core/pcm_native.c