audio: Improve logging in remote submix module
Implement IModule::dump to display the current state in
the audioflinger dump.
Throttle repetitive logging when there is nothing to read.
Remove stale comment for already fixed b/307586684.
Bug: 307586684
Test: adb shell dumpsys media.audio_flinger
Change-Id: I1f1f6e1658d035d46af3a933a825b20a78c7f297
diff --git a/audio/aidl/default/r_submix/SubmixRoute.h b/audio/aidl/default/r_submix/SubmixRoute.h
index 160df41..5425f12 100644
--- a/audio/aidl/default/r_submix/SubmixRoute.h
+++ b/audio/aidl/default/r_submix/SubmixRoute.h
@@ -17,6 +17,7 @@
#pragma once
#include <mutex>
+#include <string>
#include <android-base/thread_annotations.h>
#include <audio_utils/clock.h>
@@ -68,6 +69,7 @@
const ::aidl::android::media::audio::common::AudioDeviceAddress& deviceAddress);
static void removeRoute(
const ::aidl::android::media::audio::common::AudioDeviceAddress& deviceAddress);
+ static std::string dumpRoutes();
bool isStreamInOpen() {
std::lock_guard guard(mLock);
@@ -115,20 +117,24 @@
void standby(bool isInput);
long updateReadCounterFrames(size_t frameCount);
+ std::string dump();
+
private:
using RoutesMap = std::map<::aidl::android::media::audio::common::AudioDeviceAddress,
std::shared_ptr<r_submix::SubmixRoute>>;
class RoutesMonitor {
public:
RoutesMonitor(std::mutex& mutex, RoutesMap& routes) : mLock(mutex), mRoutes(routes) {}
+ RoutesMonitor(std::mutex& mutex, RoutesMap& routes, bool /*tryLock*/)
+ : mLock(mutex, std::try_to_lock), mRoutes(routes) {}
RoutesMap* operator->() { return &mRoutes; }
private:
- std::lock_guard<std::mutex> mLock;
+ std::unique_lock<std::mutex> mLock;
RoutesMap& mRoutes;
};
- static RoutesMonitor getRoutes();
+ static RoutesMonitor getRoutes(bool tryLock = false);
bool isStreamConfigCompatible(const AudioConfig& streamConfig);