aaudio: fix leak of AAudioBinderClient
Made it a Singleton that gets reused.
Bug: 37992613
Test: write_sine_callback.cpp
Change-Id: I63c045bd71d3bc1fc84f5fd4d7a6159fa5184c1c
Signed-off-by: Phil Burk <philburk@google.com>
diff --git a/media/libaaudio/src/binding/AAudioBinderClient.cpp b/media/libaaudio/src/binding/AAudioBinderClient.cpp
index 3f1bba3..435b30f 100644
--- a/media/libaaudio/src/binding/AAudioBinderClient.cpp
+++ b/media/libaaudio/src/binding/AAudioBinderClient.cpp
@@ -22,6 +22,7 @@
#include <binder/IServiceManager.h>
#include <utils/Mutex.h>
#include <utils/RefBase.h>
+#include <utils/Singleton.h>
#include <aaudio/AAudio.h>
@@ -47,6 +48,8 @@
static android::Mutex gServiceLock;
static sp<IAAudioService> gAAudioService;
+ANDROID_SINGLETON_STATIC_INSTANCE(AAudioBinderClient);
+
// TODO Share code with other service clients.
// Helper function to get access to the "AAudioService" service.
// This code was modeled after frameworks/av/media/libaudioclient/AudioSystem.cpp
@@ -81,7 +84,8 @@
}
AAudioBinderClient::AAudioBinderClient()
- : AAudioServiceInterface() {}
+ : AAudioServiceInterface()
+ , Singleton<AAudioBinderClient>() {}
AAudioBinderClient::~AAudioBinderClient() {}
diff --git a/media/libaaudio/src/binding/AAudioBinderClient.h b/media/libaaudio/src/binding/AAudioBinderClient.h
index ca2da29..e223376 100644
--- a/media/libaaudio/src/binding/AAudioBinderClient.h
+++ b/media/libaaudio/src/binding/AAudioBinderClient.h
@@ -17,6 +17,8 @@
#ifndef ANDROID_AAUDIO_AAUDIO_BINDER_CLIENT_H
#define ANDROID_AAUDIO_AAUDIO_BINDER_CLIENT_H
+#include <utils/Singleton.h>
+
#include <aaudio/AAudio.h>
#include "AAudioServiceDefinitions.h"
#include "AAudioServiceInterface.h"
@@ -30,7 +32,8 @@
namespace aaudio {
-class AAudioBinderClient : public AAudioServiceInterface {
+class AAudioBinderClient : public AAudioServiceInterface
+ , public android::Singleton<AAudioBinderClient> {
public: