summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IAudioPolicyService.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2014-05-20 11:27:36 -0700
committerEric Laurent <elaurent@google.com>2014-05-29 18:01:58 -0700
commitb52c152d553556b2d227ffc943489de0c60b4b02 (patch)
treebcaca952efbd1ffa7eefa7251beafc3d2574a04a /media/libmedia/IAudioPolicyService.cpp
parent6a94d69dc4f32abb53c466a96f905bb199be6417 (diff)
downloadframeworks_av-b52c152d553556b2d227ffc943489de0c60b4b02.zip
frameworks_av-b52c152d553556b2d227ffc943489de0c60b4b02.tar.gz
frameworks_av-b52c152d553556b2d227ffc943489de0c60b4b02.tar.bz2
audio policy: add routing update client interface
Added IAudioPolicyServiceClient client binder interface for client process to receive notifications from AudioPolicyService when audio ports are added/removed or audio patches created/released. The audio patches owned by a given client are automatically released when this client binder dies. Bug: 14815883. Change-Id: I6013f6aec03b50565cffb1ad2cd1f0f8852032c5
Diffstat (limited to 'media/libmedia/IAudioPolicyService.cpp')
-rw-r--r--media/libmedia/IAudioPolicyService.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp
index ad2d4eb..eee72c5 100644
--- a/media/libmedia/IAudioPolicyService.cpp
+++ b/media/libmedia/IAudioPolicyService.cpp
@@ -63,7 +63,8 @@ enum {
CREATE_AUDIO_PATCH,
RELEASE_AUDIO_PATCH,
LIST_AUDIO_PATCHES,
- SET_AUDIO_PORT_CONFIG
+ SET_AUDIO_PORT_CONFIG,
+ REGISTER_CLIENT
};
class BpAudioPolicyService : public BpInterface<IAudioPolicyService>
@@ -524,6 +525,13 @@ public:
}
return status;
}
+ virtual void registerClient(const sp<IAudioPolicyServiceClient>& client)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
+ data.writeStrongBinder(client->asBinder());
+ remote()->transact(REGISTER_CLIENT, data, &reply);
+ }
};
IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService");
@@ -910,6 +918,13 @@ status_t BnAudioPolicyService::onTransact(
reply->writeInt32(status);
return NO_ERROR;
}
+ case REGISTER_CLIENT: {
+ CHECK_INTERFACE(IAudioPolicyService, data, reply);
+ sp<IAudioPolicyServiceClient> client = interface_cast<IAudioPolicyServiceClient>(
+ data.readStrongBinder());
+ registerClient(client);
+ return NO_ERROR;
+ } break;
default:
return BBinder::onTransact(code, data, reply, flags);