Fixing regression where the proper rotation check was not being done. (Bug 6422040)

Change-Id: Iadc9a886b84c4418750dc365298944f76c564587
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 028a451..876aa3b 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -381,15 +381,8 @@
         }
         mSearchDropTargetBar.onSearchPackagesChanged(searchVisible, voiceVisible);
 
-        final String forceEnableRotation =
-                SystemProperties.get(FORCE_ENABLE_ROTATION_PROPERTY, "false");
-
-        boolean enableRotation = getResources().getBoolean(R.bool.allow_rotation);
-
         // On large interfaces, we want the screen to auto-rotate based on the current orientation
-        if (enableRotation || "true".equalsIgnoreCase(forceEnableRotation)) {
-            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
-        }
+        unlockScreenOrientation(true);
     }
 
     private void checkForLocaleChange() {
@@ -3333,16 +3326,31 @@
         return oriMap[(d.getRotation() + indexOffset) % 4];
     }
 
-    public void lockScreenOrientation() {
-        setRequestedOrientation(mapConfigurationOriActivityInfoOri(getResources()
-                .getConfiguration().orientation));
+    public boolean isRotationEnabled() {
+        boolean forceEnableRotation = "true".equalsIgnoreCase(SystemProperties.get(
+                FORCE_ENABLE_ROTATION_PROPERTY, "false"));
+        boolean enableRotation = forceEnableRotation ||
+                getResources().getBoolean(R.bool.allow_rotation);
+        return enableRotation;
     }
-    public void unlockScreenOrientation() {
-        mHandler.postDelayed(new Runnable() {
-            public void run() {
+    public void lockScreenOrientation() {
+        if (isRotationEnabled()) {
+            setRequestedOrientation(mapConfigurationOriActivityInfoOri(getResources()
+                    .getConfiguration().orientation));
+        }
+    }
+    public void unlockScreenOrientation(boolean immediate) {
+        if (isRotationEnabled()) {
+            if (immediate) {
                 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+            } else {
+                mHandler.postDelayed(new Runnable() {
+                    public void run() {
+                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+                    }
+                }, mRestoreScreenOrientationDelay);
             }
-        }, mRestoreScreenOrientationDelay);
+        }
     }
 
     /* Cling related */