Merge "audio policy service: fix audioserver port cb upon APS crash" into pi-dev am: 2db457b39e

am: 515fe146d9

Change-Id: I7e40b6dff9265b17552311e1b34f26c7259f8643
gugelfrei
Eric Laurent 6 years ago committed by android-build-merger
commit e6ce88c91c

@ -20,6 +20,7 @@
#include <utils/Log.h> #include <utils/Log.h>
#include <binder/IServiceManager.h> #include <binder/IServiceManager.h>
#include <binder/ProcessState.h> #include <binder/ProcessState.h>
#include <binder/IPCThreadState.h>
#include <media/AudioResamplerPublic.h> #include <media/AudioResamplerPublic.h>
#include <media/AudioSystem.h> #include <media/AudioSystem.h>
#include <media/IAudioFlinger.h> #include <media/IAudioFlinger.h>
@ -75,7 +76,9 @@ const sp<IAudioFlinger> AudioSystem::get_audio_flinger()
af = gAudioFlinger; af = gAudioFlinger;
} }
if (afc != 0) { if (afc != 0) {
int64_t token = IPCThreadState::self()->clearCallingIdentity();
af->registerClient(afc); af->registerClient(afc);
IPCThreadState::self()->restoreCallingIdentity(token);
} }
return af; return af;
} }
@ -767,7 +770,10 @@ const sp<IAudioPolicyService> AudioSystem::get_audio_policy_service()
ap = gAudioPolicyService; ap = gAudioPolicyService;
} }
if (apc != 0) { if (apc != 0) {
int64_t token = IPCThreadState::self()->clearCallingIdentity();
ap->registerClient(apc); ap->registerClient(apc);
ap->setAudioPortCallbacksEnabled(apc->isAudioPortCbEnabled());
IPCThreadState::self()->restoreCallingIdentity(token);
} }
return ap; return ap;

@ -431,6 +431,7 @@ private:
int addAudioPortCallback(const sp<AudioPortCallback>& callback); int addAudioPortCallback(const sp<AudioPortCallback>& callback);
int removeAudioPortCallback(const sp<AudioPortCallback>& callback); int removeAudioPortCallback(const sp<AudioPortCallback>& callback);
bool isAudioPortCbEnabled() const { return (mAudioPortCallbacks.size() != 0); }
// DeathRecipient // DeathRecipient
virtual void binderDied(const wp<IBinder>& who); virtual void binderDied(const wp<IBinder>& who);

Loading…
Cancel
Save