diff options
author | Jae Seo <jaeseo@google.com> | 2015-07-17 10:41:55 -0700 |
---|---|---|
committer | Jae Seo <jaeseo@google.com> | 2015-07-17 10:41:55 -0700 |
commit | d2a8d71ce0eeb14034ec779a00e5ff6a0e173fb4 (patch) | |
tree | 960705284079270658a05f671d5539d6f796d80e /services/core/java/com/android/server/media | |
parent | 1181323230478e3027bbabbbaf769dcd4a11a0e4 (diff) | |
download | frameworks_base-d2a8d71ce0eeb14034ec779a00e5ff6a0e173fb4.zip frameworks_base-d2a8d71ce0eeb14034ec779a00e5ff6a0e173fb4.tar.gz frameworks_base-d2a8d71ce0eeb14034ec779a00e5ff6a0e173fb4.tar.bz2 |
MediaSession: Do not lock on AudioManager.getStreamVolume
Locking on AudioManager.getStreamVolume method causes watchdog killing
system process for it makes a native call to get devices for stream,
which takes time. This change removes such locking.
Bug: 22404242
Change-Id: I23de3efe33642341205d65f58bc5b74542f1f506
Diffstat (limited to 'services/core/java/com/android/server/media')
-rw-r--r-- | services/core/java/com/android/server/media/MediaSessionRecord.java | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 569a0fc..7f5360b 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -1067,23 +1067,22 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { @Override public ParcelableVolumeInfo getVolumeAttributes() { + int volumeType; + AudioAttributes attributes; synchronized (mLock) { - int type; - int max; - int current; if (mVolumeType == PlaybackInfo.PLAYBACK_TYPE_REMOTE) { - type = mVolumeControlType; - max = mMaxVolume; - current = mOptimisticVolume != -1 ? mOptimisticVolume - : mCurrentVolume; - } else { - int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs); - type = VolumeProvider.VOLUME_CONTROL_ABSOLUTE; - max = mAudioManager.getStreamMaxVolume(stream); - current = mAudioManager.getStreamVolume(stream); + int current = mOptimisticVolume != -1 ? mOptimisticVolume : mCurrentVolume; + return new ParcelableVolumeInfo( + mVolumeType, mAudioAttrs, mVolumeControlType, mMaxVolume, current); } - return new ParcelableVolumeInfo(mVolumeType, mAudioAttrs, type, max, current); - } + volumeType = mVolumeType; + attributes = mAudioAttrs; + } + int stream = AudioAttributes.toLegacyStreamType(attributes); + int max = mAudioManager.getStreamMaxVolume(stream); + int current = mAudioManager.getStreamVolume(stream); + return new ParcelableVolumeInfo( + volumeType, attributes, VolumeProvider.VOLUME_CONTROL_ABSOLUTE, max, current); } @Override |