diff options
| author | Amith Yamasani <yamasani@google.com> | 2012-05-31 13:08:07 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-31 13:08:07 -0700 |
| commit | 4a3a9685d17cb29f70a7c56a3d33f2c8d5288e72 (patch) | |
| tree | 130f2dac7d3b8e7f0495863c143c7567ab746e98 /core | |
| parent | a13b4da68d8df0977c8dec5001de7c9ecea71d9e (diff) | |
| parent | a654986978c870ed33af2ad696cd6e61d9fed489 (diff) | |
| download | frameworks_base-4a3a9685d17cb29f70a7c56a3d33f2c8d5288e72.zip frameworks_base-4a3a9685d17cb29f70a7c56a3d33f2c8d5288e72.tar.gz frameworks_base-4a3a9685d17cb29f70a7c56a3d33f2c8d5288e72.tar.bz2 | |
Merge "Protect volumepanel slider creation from race condition." into jb-dev
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/view/VolumePanel.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java index 78984e0..5ffc2c3 100644 --- a/core/java/android/view/VolumePanel.java +++ b/core/java/android/view/VolumePanel.java @@ -437,8 +437,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(); @@ -450,8 +452,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(); @@ -471,10 +475,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) { |
