IMS-VT: Fix race condition
Due to race condition in VideoCallPresenter
the onUiShowing notification was being
ignored. This resulted in disabling camera
even though UI was in foreground.
Fix the issue by explicitly requesting
onUiShowing notification upon initialization.
CRs-fixed: 2006898
Change-Id: I5d827724472134723a70d3c3ec23563b6b6e7f83
diff --git a/InCallUI/src/com/android/incallui/InCallUiStateNotifier.java b/InCallUI/src/com/android/incallui/InCallUiStateNotifier.java
index 299c13b..fc6eeec 100644
--- a/InCallUI/src/com/android/incallui/InCallUiStateNotifier.java
+++ b/InCallUI/src/com/android/incallui/InCallUiStateNotifier.java
@@ -100,6 +100,14 @@
mInCallUiStateNotifierListeners.add(listener);
}
+ public void addListener(InCallUiStateNotifierListener listener, boolean notifyNow) {
+ Preconditions.checkNotNull(listener);
+ if (notifyNow) {
+ listener.onUiShowing(isUiShowing());
+ }
+ mInCallUiStateNotifierListeners.add(listener);
+ }
+
/**
* Remove a {@link InCallUiStateNotifierListener}.
*
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index 1defb66..c1e4f2e 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -303,7 +303,6 @@
// Register for surface and video events from {@link InCallVideoCallListener}s.
InCallVideoCallCallbackNotifier.getInstance().addSurfaceChangeListener(this);
- InCallUiStateNotifier.getInstance().addListener(this);
mCurrentVideoState = VideoProfile.STATE_AUDIO_ONLY;
mCurrentCallState = Call.State.INVALID;
@@ -312,6 +311,7 @@
onStateChange(inCallState, inCallState, CallList.getInstance());
InCallVideoCallCallbackNotifier.getInstance().addVideoEventListener(this,
VideoUtils.isVideoCall(mCurrentVideoState));
+ InCallUiStateNotifier.getInstance().addListener(this, true );
}
/**