diff options
author | Eric Laurent <elaurent@google.com> | 2014-05-20 11:27:36 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2014-05-29 18:01:58 -0700 |
commit | b52c152d553556b2d227ffc943489de0c60b4b02 (patch) | |
tree | bcaca952efbd1ffa7eefa7251beafc3d2574a04a /media/libmedia/IAudioPolicyService.cpp | |
parent | 6a94d69dc4f32abb53c466a96f905bb199be6417 (diff) | |
download | frameworks_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.cpp | 17 |
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); |