From 50b2f304bde9bdb8c8c5ca57efafb53a417afa78 Mon Sep 17 00:00:00 2001 From: Tyler Gunn Date: Wed, 25 May 2016 18:58:21 -0700 Subject: 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 --- .../incallui/InCallOrientationEventListener.java | 27 ++++++++++++++++++++++ .../com/android/incallui/VideoCallPresenter.java | 1 + 2 files changed, 28 insertions(+) (limited to 'InCallUI') 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); } @@ -110,6 +117,26 @@ public class InCallOrientationEventListener extends OrientationEventListener { enable(false); } + /** + * 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 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