Merge "Don't drop the drawable cache completely on configuration change"
diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java
index 2a76e33..6095a64 100755
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/core/java/android/view/WindowOrientationListener.java
@@ -234,6 +234,14 @@
         // high time constant.
         private static final float MAX_DEVIATION_FROM_GRAVITY = 1.5f;
 
+        // Minimum acceleration considered, in m/s^2. Below this threshold sensor noise will have
+        // significant impact on the calculations and in case of the vector (0, 0, 0) there is no
+        // defined rotation or tilt at all. Low or zero readings can happen when space travelling
+        // or free falling, but more commonly when shaking or getting bad readings from the sensor.
+        // The accelerometer is turned off when not used and polling it too soon after it is
+        // turned on may result in (0, 0, 0).
+        private static final float MIN_ABS_ACCELERATION = 1.5f;
+
         // Actual sampling period corresponding to SensorManager.SENSOR_DELAY_NORMAL.  There's no
         // way to get this information from SensorManager.
         // Note the actual period is generally 3-30ms larger than this depending on the device, but
@@ -347,6 +355,9 @@
             float deviation = Math.abs(magnitude - SensorManager.STANDARD_GRAVITY);
 
             handleAccelerationDistrust(deviation);
+            if (magnitude < MIN_ABS_ACCELERATION) {
+                return; // Ignore tilt and orientation when (0, 0, 0) or low reading
+            }
 
             // only filter tilt when we're accelerating
             float alpha = 1;
diff --git a/policy/src/com/android/internal/policy/impl/GlobalActions.java b/policy/src/com/android/internal/policy/impl/GlobalActions.java
index 1f06dcc..5e33f05 100644
--- a/policy/src/com/android/internal/policy/impl/GlobalActions.java
+++ b/policy/src/com/android/internal/policy/impl/GlobalActions.java
@@ -221,8 +221,7 @@
         final AlertDialog.Builder ab = new AlertDialog.Builder(mContext);
 
         ab.setAdapter(mAdapter, this)
-                .setInverseBackgroundForced(true)
-                .setTitle(R.string.global_actions);
+                .setInverseBackgroundForced(true);
 
         final AlertDialog dialog = ab.create();
         dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
@@ -249,6 +248,7 @@
         } else {
             mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
         }
+        mDialog.setTitle(R.string.global_actions);
     }