OSDN Git Service

audio: update switch to use FALLTHROUGH_INTENDED
authorAndy Hung <hunga@google.com>
Tue, 9 Oct 2018 20:55:11 +0000 (13:55 -0700)
committerAndy Hung <hunga@google.com>
Wed, 10 Oct 2018 18:10:20 +0000 (11:10 -0700)
Test: compile, sanity
Bug: 117509050
Change-Id: I1394e22621af6519b6679353f31f06561ffeacad

audio/include/system/audio.h
audio_utils/fifo.cpp

index 418299a..fd8b6d2 100644 (file)
 #include "audio-base.h"
 #include "audio-base-utils.h"
 
+/*
+ * Annotation to tell clang that we intend to fall through from one case to
+ * another in a switch (for c++ files). Sourced from android-base/macros.h.
+ * TODO: See also C++17 [[fallthough]].
+ */
+#ifndef FALLTHROUGH_INTENDED
+#if defined(__clang__) && defined(__cplusplus)
+#define FALLTHROUGH_INTENDED [[clang::fallthrough]]
+#else
+#define FALLTHROUGH_INTENDED
+#endif // __clang__ && __cplusplus
+#endif // FALLTHROUGH_INTENDED
+
 __BEGIN_DECLS
 
 /* The enums were moved here mostly from
@@ -698,7 +711,7 @@ static inline bool audio_is_input_channel(audio_channel_mask_t channel)
         if (bits & ~AUDIO_CHANNEL_IN_ALL) {
             bits = 0;
         }
-        // fall through
+        FALLTHROUGH_INTENDED;
     case AUDIO_CHANNEL_REPRESENTATION_INDEX:
         return bits != 0;
     default:
@@ -720,7 +733,7 @@ static inline bool audio_is_output_channel(audio_channel_mask_t channel)
         if (bits & ~AUDIO_CHANNEL_OUT_ALL) {
             bits = 0;
         }
-        // fall through
+        FALLTHROUGH_INTENDED;
     case AUDIO_CHANNEL_REPRESENTATION_INDEX:
         return bits != 0;
     default:
@@ -741,7 +754,7 @@ static inline uint32_t audio_channel_count_from_in_mask(audio_channel_mask_t cha
     case AUDIO_CHANNEL_REPRESENTATION_POSITION:
         // TODO: We can now merge with from_out_mask and remove anding
         bits &= AUDIO_CHANNEL_IN_ALL;
-        // fall through
+        FALLTHROUGH_INTENDED;
     case AUDIO_CHANNEL_REPRESENTATION_INDEX:
         return popcount(bits);
     default:
@@ -762,7 +775,7 @@ static inline uint32_t audio_channel_count_from_out_mask(audio_channel_mask_t ch
     case AUDIO_CHANNEL_REPRESENTATION_POSITION:
         // TODO: We can now merge with from_in_mask and remove anding
         bits &= AUDIO_CHANNEL_OUT_ALL;
-        // fall through
+        FALLTHROUGH_INTENDED;
     case AUDIO_CHANNEL_REPRESENTATION_INDEX:
         return popcount(bits);
     default:
index 7ac17da..a6dd545 100644 (file)
@@ -27,6 +27,7 @@
 #include <audio_utils/futex.h>
 #include <audio_utils/roundup.h>
 #include <log/log.h>
+#include <system/audio.h> // FALLTHROUGH_INTENDED
 #include <utils/Errors.h>
 
 audio_utils_fifo_base::audio_utils_fifo_base(uint32_t frameCount,
@@ -238,7 +239,7 @@ ssize_t audio_utils_fifo_writer::obtain(audio_utils_iovec iovec[2], size_t count
                 break;
             case AUDIO_UTILS_FIFO_SYNC_PRIVATE:
                 op = FUTEX_WAIT_PRIVATE;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case AUDIO_UTILS_FIFO_SYNC_SHARED:
                 if (timeout->tv_sec == LONG_MAX) {
                     timeout = NULL;
@@ -254,7 +255,7 @@ ssize_t audio_utils_fifo_writer::obtain(audio_utils_iovec iovec[2], size_t count
                             // bypass the "timeout = NULL;" below
                             continue;
                         }
-                        // fall through
+                        FALLTHROUGH_INTENDED;
                     case EINTR:
                     case ETIMEDOUT:
                         err = -errno;
@@ -322,7 +323,7 @@ void audio_utils_fifo_writer::release(size_t count)
                 break;
             case AUDIO_UTILS_FIFO_SYNC_PRIVATE:
                 op = FUTEX_WAKE_PRIVATE;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case AUDIO_UTILS_FIFO_SYNC_SHARED:
                 if (filled >= 0) {
                     if ((uint32_t) filled < mArmLevel) {
@@ -480,7 +481,7 @@ void audio_utils_fifo_reader::release(size_t count)
                 break;
             case AUDIO_UTILS_FIFO_SYNC_PRIVATE:
                 op = FUTEX_WAKE_PRIVATE;
-                // fall through
+                FALLTHROUGH_INTENDED;
             case AUDIO_UTILS_FIFO_SYNC_SHARED:
                 if (filled >= 0) {
                     if (filled > mArmLevel) {
@@ -539,7 +540,7 @@ ssize_t audio_utils_fifo_reader::obtain(audio_utils_iovec iovec[2], size_t count
             break;
         case AUDIO_UTILS_FIFO_SYNC_PRIVATE:
             op = FUTEX_WAIT_PRIVATE;
-            // fall through
+            FALLTHROUGH_INTENDED;
         case AUDIO_UTILS_FIFO_SYNC_SHARED:
             if (timeout->tv_sec == LONG_MAX) {
                 timeout = NULL;
@@ -555,7 +556,7 @@ ssize_t audio_utils_fifo_reader::obtain(audio_utils_iovec iovec[2], size_t count
                         // bypass the "timeout = NULL;" below
                         continue;
                     }
-                    // fall through
+                    FALLTHROUGH_INTENDED;
                 case EINTR:
                 case ETIMEDOUT:
                     err = -errno;