summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/media
diff options
context:
space:
mode:
authorJae Seo <jaeseo@google.com>2015-07-17 10:41:55 -0700
committerJae Seo <jaeseo@google.com>2015-07-17 10:41:55 -0700
commitd2a8d71ce0eeb14034ec779a00e5ff6a0e173fb4 (patch)
tree960705284079270658a05f671d5539d6f796d80e /services/core/java/com/android/server/media
parent1181323230478e3027bbabbbaf769dcd4a11a0e4 (diff)
downloadframeworks_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.java27
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