This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 7d55e264214a6308e6c5d10c579c9f8dfd6a0e12
Author: yangyalei <[email protected]>
AuthorDate: Wed Aug 6 20:00:50 2025 +0800

    nuttx/audio: Direct return non-format configure operation
    
    protect configure lower only once
    
    Signed-off-by: yangyalei <[email protected]>
---
 audio/audio.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/audio/audio.c b/audio/audio.c
index 3d88ec33d43..9125adbe4e3 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -354,18 +354,19 @@ static int audio_configure(FAR struct audio_upperhalf_s 
*upper,
 #else
   ret = lower->ops->configure(lower, caps);
 #endif
-
-  if (ret == OK && (caps->ac_type == AUDIO_TYPE_INPUT ||
-                    caps->ac_type == AUDIO_TYPE_OUTPUT))
+  if (ret < 0 || (caps->ac_type != AUDIO_TYPE_INPUT &&
+      caps->ac_type != AUDIO_TYPE_OUTPUT))
     {
-      audio_setstate(upper, AUDIO_STATE_PREPARED);
-      upper->info.format = caps->ac_subtype;
-      upper->info.channels = caps->ac_channels;
-      upper->info.subformat = caps->ac_controls.b[2];
-      upper->info.samplerate = caps->ac_controls.hw[0] |
-                               (caps->ac_controls.b[3] << 16);
+      return ret;
     }
 
+  audio_setstate(upper, AUDIO_STATE_PREPARED);
+  upper->info.format = caps->ac_subtype;
+  upper->info.channels = caps->ac_channels;
+  upper->info.subformat = caps->ac_controls.b[2];
+  upper->info.samplerate =
+      caps->ac_controls.hw[0] | (caps->ac_controls.b[3] << 16);
+
   return ret;
 }
 

Reply via email to