diff options
author | Tyler Gunn <tgunn@google.com> | 2016-05-25 18:58:21 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2016-05-25 18:58:21 -0700 |
commit | 50b2f304bde9bdb8c8c5ca57efafb53a417afa78 (patch) | |
tree | ec878fd90449e7235d786ab22223910e6f8d4f06 /InCallUI/src/com/android | |
parent | f6ce2079891bdcddd9902c7254a7327e43925c56 (diff) |
IMS-VT: Optimize handling of orientation requests
-Invoking setInCallAllowsOrientationChange API triggers
multiple events which send data across binder. This
could cause performance degradations in some cases.
-Enable/disable orientation listeners when primary call
changes
BUG: 28766890
Change-Id: I457141ec6db7b5234be6aa537d39892e61efff6e
Diffstat (limited to 'InCallUI/src/com/android')
-rw-r--r-- | InCallUI/src/com/android/incallui/InCallOrientationEventListener.java | 27 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/VideoCallPresenter.java | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java b/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java index d3334a3ef..3cab6dc3b 100644 --- a/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java +++ b/InCallUI/src/com/android/incallui/InCallOrientationEventListener.java @@ -62,6 +62,7 @@ public class InCallOrientationEventListener extends OrientationEventListener { * Cache the current rotation of the device. */ private static int sCurrentOrientation = SCREEN_ORIENTATION_0; + private boolean mEnabled = false; public InCallOrientationEventListener(Context context) { super(context); @@ -97,7 +98,13 @@ public class InCallOrientationEventListener extends OrientationEventListener { * @param notify true or false. Notify device orientation changed if true. */ public void enable(boolean notify) { + if (mEnabled) { + Log.v(this, "enable: Orientation listener is already enabled. Ignoring..."); + return; + } + super.enable(); + mEnabled = true; if (notify) { InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation); } @@ -111,6 +118,26 @@ public class InCallOrientationEventListener extends OrientationEventListener { } /** + * Disables the OrientationEventListener. + */ + public void disable() { + if (!mEnabled) { + Log.v(this, "enable: Orientation listener is already disabled. Ignoring..."); + return; + } + + mEnabled = false; + super.disable(); + } + + /** + * Returns true the OrientationEventListener is enabled, false otherwise. + */ + public boolean isEnabled() { + return mEnabled; + } + + /** * Converts sensor rotation in degrees to screen orientation constants. * @param rotation sensor rotation angle in degrees * @return Screen orientation angle in degrees (0, 90, 180, 270). Returns -1 for degrees not diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java index 3494afa6d..06e3e4440 100644 --- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java +++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java @@ -565,6 +565,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi updateCameraSelection(newPrimaryCall); adjustVideoMode(newPrimaryCall); } + checkForOrientationAllowedChange(newPrimaryCall); } private boolean isVideoMode() { |