#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
if (bits & ~AUDIO_CHANNEL_IN_ALL) {
bits = 0;
}
- // fall through
+ FALLTHROUGH_INTENDED;
case AUDIO_CHANNEL_REPRESENTATION_INDEX:
return bits != 0;
default:
if (bits & ~AUDIO_CHANNEL_OUT_ALL) {
bits = 0;
}
- // fall through
+ FALLTHROUGH_INTENDED;
case AUDIO_CHANNEL_REPRESENTATION_INDEX:
return bits != 0;
default:
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:
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:
#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,
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;
// bypass the "timeout = NULL;" below
continue;
}
- // fall through
+ FALLTHROUGH_INTENDED;
case EINTR:
case ETIMEDOUT:
err = -errno;
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) {
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) {
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;
// bypass the "timeout = NULL;" below
continue;
}
- // fall through
+ FALLTHROUGH_INTENDED;
case EINTR:
case ETIMEDOUT:
err = -errno;