r_submix: Fix logspam on pipe corruption

Prevent logging an error message on every attempt to write
if the FIFO backing up the MonoPipe got corrupted. This condition
can be detected by checking for -EIO error code.

Bug: 74067530
Test: make audio_utils_fifo_base::mIsShutdown to be set by default,
      run r_submix_tests and observe logcat

Change-Id: I5d67997e902e834f04c10f9ffb39b16cba9c5739
This commit is contained in:
Mikhail Naganov 2018-03-01 13:46:57 -08:00
parent 1df8a0039f
commit ab5b51838c

View file

@ -821,6 +821,11 @@ static ssize_t out_write(struct audio_stream_out *stream, const void* buffer,
written_frames = 0;
return 0;
} else if (written_frames == -EIO) {
// receiving -EIO means that the underlying FIFO has shut itself down
// due to reader/writer indices corruption. This state is irreversible,
// so shut down the monopipe. It will be destroyed on the next call to 'write.'
sink->shutdown(true);
} else {
// write() returned UNDERRUN or WOULD_BLOCK, retry
ALOGE("out_write() write to pipe returned unexpected %zd", written_frames);