summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/managerdefault/AudioPolicyManager.h
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-05-22 10:32:38 -0700
committerEric Laurent <elaurent@google.com>2015-05-22 10:32:38 -0700
commit87ffa39d29d1803b48237888a9fbf3d5f2c60c21 (patch)
treecf0a01c080d17853881d3f9f1d0b72391667c530 /services/audiopolicy/managerdefault/AudioPolicyManager.h
parent4a95e69406aa2e9896d865962d6d947ebbdac6fc (diff)
downloadframeworks_av-87ffa39d29d1803b48237888a9fbf3d5f2c60c21.zip
frameworks_av-87ffa39d29d1803b48237888a9fbf3d5f2c60c21.tar.gz
frameworks_av-87ffa39d29d1803b48237888a9fbf3d5f2c60c21.tar.bz2
audio policy: add checks on primary output
Check if primary output has been initialized before using it. The primary output may not be initialized either due to HAL failure or on devices without telephony. Bug: 19573336. Change-Id: Id1fc3ed588268e1232b43d1e6235254d2f1a71d0
Diffstat (limited to 'services/audiopolicy/managerdefault/AudioPolicyManager.h')
-rw-r--r--services/audiopolicy/managerdefault/AudioPolicyManager.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index ea16864..f9d1198 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -553,10 +553,16 @@ protected:
audio_devices_t availablePrimaryOutputDevices() const
{
+ if (!hasPrimaryOutput()) {
+ return AUDIO_DEVICE_NONE;
+ }
return mPrimaryOutput->supportedDevices() & mAvailableOutputDevices.types();
}
audio_devices_t availablePrimaryInputDevices() const
{
+ if (!hasPrimaryOutput()) {
+ return AUDIO_DEVICE_NONE;
+ }
return mAvailableInputDevices.getDevicesFromHwModule(mPrimaryOutput->getModuleHandle());
}
@@ -576,6 +582,8 @@ protected:
void clearSessionRoutes(uid_t uid);
void checkStrategyRoute(routing_strategy strategy, audio_io_handle_t ouptutToSkip);
+ status_t hasPrimaryOutput() const { return mPrimaryOutput != 0; }
+
uid_t mUidCached;
AudioPolicyClientInterface *mpClientInterface; // audio policy client interface
sp<SwAudioOutputDescriptor> mPrimaryOutput; // primary output descriptor