diff options
4 files changed, 44 insertions, 23 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) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 3a50560..ecdaa39 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -484,14 +484,7 @@ public class PhoneStatusBar extends BaseStatusBar { @Override public void showSearchPanel() { - // XXX This is a bit of a hack. Since navbar is no longer slippery, we use the - // gesture to dismiss the expanded statusbar. - if (mExpanded) { - animateCollapse(); - return; - } else { - super.showSearchPanel(); - } + super.showSearchPanel(); WindowManager.LayoutParams lp = (android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams(); lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; @@ -1044,6 +1037,7 @@ public class PhoneStatusBar extends BaseStatusBar { mExpandedVisible = true; mNotificationPanel.setVisibility(View.VISIBLE); + makeSlippery(mNavigationBarView, true); updateExpandedViewPos(EXPANDED_LEAVE_ALONE); @@ -1059,6 +1053,16 @@ public class PhoneStatusBar extends BaseStatusBar { visibilityChanged(true); } + private static void makeSlippery(View view, boolean slippery) { + WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams(); + if (slippery) { + lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY; + } else { + lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY; + } + WindowManagerImpl.getDefault().updateViewLayout(view, lp); + } + public void animateExpand() { if (SPEW) Slog.d(TAG, "Animate expand: expanded=" + mExpanded); if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) { @@ -1144,6 +1148,7 @@ public class PhoneStatusBar extends BaseStatusBar { mExpandedVisible = false; visibilityChanged(false); mNotificationPanel.setVisibility(View.INVISIBLE); + makeSlippery(mNavigationBarView, false); // Shrink the window to the size of the status bar only WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams(); diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 38e08ae..469b4f1 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -2242,7 +2242,9 @@ public class PowerManagerService extends IPowerManager.Stub } else { newValue = endValue; mHighestLightSensorValue = endSensorValue; - mInitialAnimation = false; + if (endValue > 0) { + mInitialAnimation = false; + } } if (mDebugLightAnimation) { @@ -2290,7 +2292,7 @@ public class PowerManagerService extends IPowerManager.Stub currentMask = mask; duration = (int) (mWindowScaleAnimation * animationDuration); startTimeMillis = SystemClock.elapsedRealtime(); - mInitialAnimation = currentValue == 0 && target > 0; + mInitialAnimation = mInitialAnimation && target > 0; if (mDebugLightAnimation) { Slog.v(TAG, "animateTo(target=" + target @@ -2608,7 +2610,8 @@ public class PowerManagerService extends IPowerManager.Stub } }; - private boolean mInitialAnimation; // used to prevent lightsensor changes while turning on + /** used to prevent lightsensor changes while turning on. */ + private boolean mInitialAnimation = true; private void dockStateChanged(int state) { synchronized (mLocks) { diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java index 5220d04..1a42f93 100644 --- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java +++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java @@ -263,12 +263,19 @@ public class WifiWatchdogStateMachine extends StateMachine { Context.CONNECTIVITY_SERVICE); sWifiOnly = (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false); - // Disable for wifi only devices. - if (Settings.Secure.getString(contentResolver, Settings.Secure.WIFI_WATCHDOG_ON) == null - && sWifiOnly) { - log("Disabling watchog for wi-fi only device"); - putSettingsBoolean(contentResolver, Settings.Secure.WIFI_WATCHDOG_ON, false); + // Watchdog is always enabled. Poor network detection & walled garden detection + // can individually be turned on/off + // TODO: Remove this setting & clean up state machine since we always have + // watchdog in an enabled state + putSettingsBoolean(contentResolver, Settings.Secure.WIFI_WATCHDOG_ON, true); + + // Disable poor network avoidance, but keep watchdog active for walled garden detection + if (sWifiOnly) { + log("Disabling poor network avoidance for wi-fi only device"); + putSettingsBoolean(contentResolver, + Settings.Secure.WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED, false); } + WifiWatchdogStateMachine wwsm = new WifiWatchdogStateMachine(context); wwsm.start(); return wwsm; |
