Fix out_write frame count to match return code.
When we return that we have consumed bytes we must update
our frame counter properly.
Bug: 31546611
Change-Id: I3285c96a6b51baf84a57c0f70afe82269c44c4cd
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 35b726e..e68535f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2063,14 +2063,16 @@
else
ret = pcm_write(out->pcm, (void *)buffer, bytes);
- if (ret == 0)
- out->written += bytes / (out->config.channels * sizeof(short));
-
release_out_focus(out, ns);
}
}
exit:
+ // For PCM we always consume the buffer and return #bytes regardless of ret.
+ if (out->usecase != USECASE_AUDIO_PLAYBACK_OFFLOAD) {
+ out->written += bytes / (out->config.channels * sizeof(short));
+ }
+
pthread_mutex_unlock(&out->lock);
if (ret != 0) {