diff options
author | wangqi <wangqi@google.com> | 2017-09-29 19:17:49 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-09-29 19:17:49 +0000 |
commit | f320aaaba334a43307b09b3f88037e6990fdb0df (patch) | |
tree | ec82262a5d4daf792f2665330ec055ac92bfeff2 | |
parent | fe7f1606c977360b8072d9efdb76ae2da9c56b94 (diff) | |
parent | 43d73dfdbda67ed9f405fa15e303643d97d33b70 (diff) |
Merge "Fix crash on incoming video call when video upgrade call is pending."
am: 43d73dfdbd
Change-Id: Ib13d248db3280e648ee295529f860ca2b672feeb
-rw-r--r-- | java/com/android/incallui/CallCardPresenter.java | 6 | ||||
-rw-r--r-- | java/com/android/incallui/VideoCallPresenter.java | 25 |
2 files changed, 19 insertions, 12 deletions
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java index 15b04eaaf..be9b3ef6c 100644 --- a/java/com/android/incallui/CallCardPresenter.java +++ b/java/com/android/incallui/CallCardPresenter.java @@ -142,7 +142,7 @@ public class CallCardPresenter }; public CallCardPresenter(Context context) { - LogUtil.i("CallCardController.constructor", null); + LogUtil.i("CallCardPresenter.constructor", null); mContext = Assert.isNotNull(context).getApplicationContext(); callLocation = CallLocationComponent.get(mContext).getCallLocation(); } @@ -179,7 +179,7 @@ public class CallCardPresenter @Override public void onInCallScreenReady() { - LogUtil.i("CallCardController.onInCallScreenReady", null); + LogUtil.i("CallCardPresenter.onInCallScreenReady", null); Assert.checkState(!isInCallScreenReady); if (mContactsPreferences != null) { mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY); @@ -222,7 +222,7 @@ public class CallCardPresenter @Override public void onInCallScreenUnready() { - LogUtil.i("CallCardController.onInCallScreenUnready", null); + LogUtil.i("CallCardPresenter.onInCallScreenUnready", null); Assert.checkState(isInCallScreenReady); // stop getting call state changes diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java index 89cddb9c4..ab02c3b86 100644 --- a/java/com/android/incallui/VideoCallPresenter.java +++ b/java/com/android/incallui/VideoCallPresenter.java @@ -60,14 +60,14 @@ import java.util.Objects; * layer: * * <ul> - * <li>{@code VideoCallPresenter} creates and informs telephony of the display surface. - * <li>{@code VideoCallPresenter} creates the preview surface. - * <li>{@code VideoCallPresenter} informs telephony of the currently selected camera. - * <li>Telephony layer sends {@link CameraCapabilities}, including the dimensions of the video for - * the current camera. - * <li>{@code VideoCallPresenter} adjusts size of the preview surface to match the aspect ratio of - * the camera. - * <li>{@code VideoCallPresenter} informs telephony of the new preview surface. + * <li>{@code VideoCallPresenter} creates and informs telephony of the display surface. + * <li>{@code VideoCallPresenter} creates the preview surface. + * <li>{@code VideoCallPresenter} informs telephony of the currently selected camera. + * <li>Telephony layer sends {@link CameraCapabilities}, including the dimensions of the video for + * the current camera. + * <li>{@code VideoCallPresenter} adjusts size of the preview surface to match the aspect ratio of + * the camera. + * <li>{@code VideoCallPresenter} informs telephony of the new preview surface. * </ul> * * <p>When downgrading to an audio-only video state, the {@code VideoCallPresenter} nulls both @@ -169,7 +169,7 @@ public class VideoCallPresenter boolean isPaused = VideoProfile.isPaused(videoState); boolean isCallActive = callState == DialerCall.State.ACTIVE; - //Show incoming Video for dialing calls to support early media + // Show incoming Video for dialing calls to support early media boolean isCallOutgoingPending = DialerCall.State.isDialing(callState) || callState == DialerCall.State.CONNECTING; @@ -455,6 +455,13 @@ public class VideoCallPresenter @Override public void onIncomingCall( InCallPresenter.InCallState oldState, InCallPresenter.InCallState newState, DialerCall call) { + // If video call screen ui is already destroyed, this shouldn't be called. But the UI may be + // updated synchronized by {@link CallCardPresenter#onIncomingCall} before this is called, this + // could still be called. Thus just do nothing in this case. + if (!isVideoCallScreenUiReady) { + LogUtil.i("VideoCallPresenter.onIncomingCall", "UI is not ready"); + return; + } // same logic should happen as with onStateChange() onStateChange(oldState, newState, CallList.getInstance()); } |