diff options
author | Glenn Kasten <gkasten@google.com> | 2013-04-16 12:35:20 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2013-04-18 16:25:14 -0700 |
commit | 949a926cadbc961fbb649c91d76d7aee8ea4d7bd (patch) | |
tree | e90ad4773399fb206886eb236919fa78d7670cd2 | |
parent | 64595e6727c478d3d80c7babbecdb470398f8c42 (diff) | |
download | frameworks_av-949a926cadbc961fbb649c91d76d7aee8ea4d7bd.zip frameworks_av-949a926cadbc961fbb649c91d76d7aee8ea4d7bd.tar.gz frameworks_av-949a926cadbc961fbb649c91d76d7aee8ea4d7bd.tar.bz2 |
Use correct pid when running under test harness
This is a partial fix which addresses one of the root causes of this bug,
but only when running under test harness. It has no effect otherwise.
Bug: 8598539
Change-Id: I87444daef1d76b17544f331e651ba1c87893c381
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 1 | ||||
-rw-r--r-- | services/audioflinger/ServiceUtilities.cpp | 5 | ||||
-rw-r--r-- | services/audioflinger/ServiceUtilities.h | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index b3de526..87eb6aa 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -143,6 +143,7 @@ AudioFlinger::AudioFlinger() mMode(AUDIO_MODE_INVALID), mBtNrecIsOff(false) { + getpid_cached = getpid(); char value[PROPERTY_VALUE_MAX]; bool doLog = (property_get("ro.test_harness", value, "0") > 0) && (atoi(value) == 1); if (doLog) { diff --git a/services/audioflinger/ServiceUtilities.cpp b/services/audioflinger/ServiceUtilities.cpp index 6a58852..d15bd04 100644 --- a/services/audioflinger/ServiceUtilities.cpp +++ b/services/audioflinger/ServiceUtilities.cpp @@ -21,8 +21,9 @@ namespace android { -// This optimization assumes mediaserver process doesn't fork, which it doesn't -const pid_t getpid_cached = getpid(); +// Not valid until initialized by AudioFlinger constructor. It would have to be +// re-initialized if the process containing AudioFlinger service forks (which it doesn't). +pid_t getpid_cached; bool recordingAllowed() { if (getpid_cached == IPCThreadState::self()->getCallingPid()) return true; diff --git a/services/audioflinger/ServiceUtilities.h b/services/audioflinger/ServiceUtilities.h index f77ec5b..80cecba 100644 --- a/services/audioflinger/ServiceUtilities.h +++ b/services/audioflinger/ServiceUtilities.h @@ -18,7 +18,7 @@ namespace android { -extern const pid_t getpid_cached; +extern pid_t getpid_cached; bool recordingAllowed(); bool settingsAllowed(); |