summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-04-16 12:35:20 -0700
committerGlenn Kasten <gkasten@google.com>2013-04-18 16:25:14 -0700
commit949a926cadbc961fbb649c91d76d7aee8ea4d7bd (patch)
treee90ad4773399fb206886eb236919fa78d7670cd2
parent64595e6727c478d3d80c7babbecdb470398f8c42 (diff)
downloadframeworks_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.cpp1
-rw-r--r--services/audioflinger/ServiceUtilities.cpp5
-rw-r--r--services/audioflinger/ServiceUtilities.h2
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();