audio_a2dp_hw: Always update frame counter in out_write

Required now that we always return success.

Bug: 30025777
Change-Id: I7db51321672c128039545cc0fb604c615f169bc3
(cherry picked from commit f4a37b255d1d6fa4cf7cefe2aeb1c3f4fdf33f3c)
diff --git a/audio_a2dp_hw/audio_a2dp_hw.c b/audio_a2dp_hw/audio_a2dp_hw.c
index 20c7335..fdd05e4 100644
--- a/audio_a2dp_hw/audio_a2dp_hw.c
+++ b/audio_a2dp_hw/audio_a2dp_hw.c
@@ -586,8 +586,7 @@
                          size_t bytes)
 {
     struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;
-    int sent;
-    int us_delay;
+    int sent = -1;
 
     DEBUG("write %zu bytes (fd %d)", bytes, out->common.audio_fd);
 
@@ -595,7 +594,7 @@
     if (out->common.state == AUDIO_A2DP_STATE_SUSPENDED ||
             out->common.state == AUDIO_A2DP_STATE_STOPPING) {
         DEBUG("stream suspended or closing");
-        goto error;
+        goto finish;
     }
 
     /* only allow autostarting if we are in stopped or standby */
@@ -604,13 +603,13 @@
     {
         if (start_audio_datapath(&out->common) < 0)
         {
-            goto error;
+            goto finish;
         }
     }
     else if (out->common.state != AUDIO_A2DP_STATE_STARTED)
     {
         ERROR("stream not in stopped or standby");
-        goto error;
+        goto finish;
     }
 
     pthread_mutex_unlock(&out->common.lock);
@@ -626,26 +625,24 @@
         } else {
             ERROR("write failed : stream suspended, avoid resetting state");
         }
-        goto error;
+        goto finish;
     }
 
+finish: ;
     const size_t frames = bytes / audio_stream_out_frame_size(stream);
     out->frames_rendered += frames;
     out->frames_presented += frames;
     pthread_mutex_unlock(&out->common.lock);
-    return bytes;
 
-error:
-    pthread_mutex_unlock(&out->common.lock);
-    us_delay = calc_audiotime(out->common.cfg, bytes);
-
-    DEBUG("emulate a2dp write delay (%d us)", us_delay);
-
-    usleep(us_delay);
+    // If send didn't work out, sleep to emulate write delay.
+    if (sent == -1) {
+        const int us_delay = calc_audiotime(out->common.cfg, bytes);
+        DEBUG("emulate a2dp write delay (%d us)", us_delay);
+        usleep(us_delay);
+    }
     return bytes;
 }
 
-
 static uint32_t out_get_sample_rate(const struct audio_stream *stream)
 {
     struct a2dp_stream_out *out = (struct a2dp_stream_out *)stream;