Reset SensorEventListener when listener reenabled.
- Following disable and reenable of the WindowOrientationListener
the state was the same as before. State should be reset to default.
- Provide a Handler to the sensor task to deliver events on the
same Thread that WindowManagerPolicy operates on.
- Expand lock protection to all of WindowOrientationListener.
- Move WindowOrientationListener to policy package.
- Make SensorEventListenerImpl non-static.
Fixes bug 7964531.
Change-Id: I17cecf3d0b6d125cb3e4d7350c3adb3f62b684bd
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 9d0903c..9cb54a9 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -84,7 +84,6 @@
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerPolicy;
-import android.view.WindowOrientationListener;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
@@ -555,8 +554,8 @@
}
class MyOrientationListener extends WindowOrientationListener {
- MyOrientationListener(Context context) {
- super(context);
+ MyOrientationListener(Context context, Handler handler) {
+ super(context, handler);
}
@Override
@@ -854,7 +853,7 @@
mKeyguardMediator = new KeyguardViewMediator(context, null);
}
mHandler = new PolicyHandler();
- mOrientationListener = new MyOrientationListener(mContext);
+ mOrientationListener = new MyOrientationListener(mContext, mHandler);
try {
mOrientationListener.setCurrentRotation(windowManager.getRotation());
} catch (RemoteException ex) { }
@@ -3760,13 +3759,16 @@
}
BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
+ @Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
mDockMode = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
Intent.EXTRA_DOCK_STATE_UNDOCKED);
}
updateRotation(true);
- updateOrientationListenerLp();
+ synchronized (mLock) {
+ updateOrientationListenerLp();
+ }
}
};