APC: Wake OffloadThread on AppOps mute
Bug: 289885996
Test: atest AudioPlaybackConfigurationTest with setprop audio.offload.min.duration.secs 1
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9d7c6f8f6649574362e087641a7b50805294a07c)
Merged-In: I93c3a507eb3f9146ff8d80ce5f34ea0e46a49e5a
Change-Id: I93c3a507eb3f9146ff8d80ce5f34ea0e46a49e5a
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 78da621..2602efb 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -20,21 +20,25 @@
#endif
#include <math.h>
+#include <sys/types.h>
// Checks and monitors OP_PLAY_AUDIO
class OpPlayAudioMonitor : public RefBase {
+ friend class sp<OpPlayAudioMonitor>;
public:
~OpPlayAudioMonitor() override;
bool hasOpPlayAudio() const;
static sp<OpPlayAudioMonitor> createIfNeeded(
+ AudioFlinger::ThreadBase* thread,
const AttributionSourceState& attributionSource,
const audio_attributes_t& attr, int id,
audio_stream_type_t streamType);
private:
- OpPlayAudioMonitor(const AttributionSourceState& attributionSource,
- audio_usage_t usage, int id);
+ OpPlayAudioMonitor(AudioFlinger::ThreadBase* thread,
+ const AttributionSourceState& attributionSource,
+ audio_usage_t usage, int id, uid_t uid);
void onFirstRef() override;
static void getPackagesForUid(uid_t uid, Vector<String16>& packages);
@@ -53,10 +57,13 @@
// called by PlayAudioOpCallback when OP_PLAY_AUDIO is updated in AppOp callback
void checkPlayAudioForUsage();
+ wp<AudioFlinger::ThreadBase> mThread;
std::atomic_bool mHasOpPlayAudio;
const AttributionSourceState mAttributionSource;
const int32_t mUsage; // on purpose not audio_usage_t because always checked in appOps as int32_t
const int mId; // for logging purposes only
+ const uid_t mUid;
+ const String16 mPackageName;
};
// playback track