summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/VolumePanel.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2012-05-31 13:17:11 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-05-31 13:17:11 -0700
commit30e4e88c91828d18f6e0cc9fd8011c2bd8877953 (patch)
treecdd19a6a2259a99ab3adb3afca5c31e44db291cf /core/java/android/view/VolumePanel.java
parent225fef5e3e9c4a6c41ca685bf101139edcd5ddcb (diff)
parent2afe8252addcf080d4752e85f6d0f21c930fde7f (diff)
downloadframeworks_base-30e4e88c91828d18f6e0cc9fd8011c2bd8877953.zip
frameworks_base-30e4e88c91828d18f6e0cc9fd8011c2bd8877953.tar.gz
frameworks_base-30e4e88c91828d18f6e0cc9fd8011c2bd8877953.tar.bz2
am 2afe8252: am 4a3a9685: Merge "Protect volumepanel slider creation from race condition." into jb-dev
* commit '2afe8252addcf080d4752e85f6d0f21c930fde7f': Protect volumepanel slider creation from race condition.
Diffstat (limited to 'core/java/android/view/VolumePanel.java')
-rw-r--r--core/java/android/view/VolumePanel.java20
1 files changed, 13 insertions, 7 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java
index 0e34adb..30d87c4 100644
--- a/core/java/android/view/VolumePanel.java
+++ b/core/java/android/view/VolumePanel.java
@@ -447,8 +447,10 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
public void postVolumeChanged(int streamType, int flags) {
if (hasMessages(MSG_VOLUME_CHANGED)) return;
- if (mStreamControls == null) {
- createSliders();
+ synchronized (this) {
+ if (mStreamControls == null) {
+ createSliders();
+ }
}
removeMessages(MSG_FREE_RESOURCES);
obtainMessage(MSG_VOLUME_CHANGED, streamType, flags).sendToTarget();
@@ -460,8 +462,10 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
public void postMuteChanged(int streamType, int flags) {
if (hasMessages(MSG_VOLUME_CHANGED)) return;
- if (mStreamControls == null) {
- createSliders();
+ synchronized (this) {
+ if (mStreamControls == null) {
+ createSliders();
+ }
}
removeMessages(MSG_FREE_RESOURCES);
obtainMessage(MSG_MUTE_CHANGED, streamType, flags).sendToTarget();
@@ -481,10 +485,12 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie
if (LOGD) Log.d(TAG, "onVolumeChanged(streamType: " + streamType + ", flags: " + flags + ")");
if ((flags & AudioManager.FLAG_SHOW_UI) != 0) {
- if (mActiveStreamType != streamType) {
- reorderSliders(streamType);
+ synchronized (this) {
+ if (mActiveStreamType != streamType) {
+ reorderSliders(streamType);
+ }
+ onShowVolumeChanged(streamType, flags);
}
- onShowVolumeChanged(streamType, flags);
}
if ((flags & AudioManager.FLAG_PLAY_SOUND) != 0 && ! mRingIsSilent) {