diff options
author | Tyler Gunn <tgunn@google.com> | 2017-06-20 15:15:44 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2017-06-21 16:55:33 +0000 |
commit | 077dd3fef020b839e37b0c02fb5df7fadc7bf875 (patch) | |
tree | a624067517d3b78520d52d3f306ede3fe13d71e3 | |
parent | 3aadc8a6c9c0b681587ad61aee73138b87c0ae35 (diff) | |
download | ims-077dd3fef020b839e37b0c02fb5df7fadc7bf875.tar.gz |
Clear video pause tracker when video un-pause reported by the modem.android-vts-8.0_r2android-vts-8.0_r1oreo-dev
When video calls are swapped, the video stream automatically unpauses
without the UI requesting the pause/resume. Thus, the video pause tracker,
which tracks pause requests from the UI, can get into a state where it
thinks the video is paused, do it will ignore further pause requests.
Test: Manual
Bug: 62779713
Bug: 62784036
Change-Id: Ia8add452dbe9a79957e8a49e20ce58317136403b
-rw-r--r-- | src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java | 15 | ||||
-rw-r--r-- | src/java/com/android/ims/internal/VideoPauseTracker.java | 9 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java b/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java index 1aae5338..d6da824f 100644 --- a/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java +++ b/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java @@ -535,4 +535,19 @@ public class ImsVideoCallProviderWrapper extends Connection.VideoProvider { public void setUseVideoPauseWorkaround(boolean useVideoPauseWorkaround) { mUseVideoPauseWorkaround = useVideoPauseWorkaround; } + + /** + * Called by {@code ImsPhoneConnection} when there is a change to the video state of the call. + * Informs the video pause tracker that the video is no longer paused. This ensures that + * subsequent pause requests are not filtered out. + * + * @param newVideoState The new video state. + */ + public void onVideoStateChanged(int newVideoState) { + if (mVideoPauseTracker.isPaused() && !VideoProfile.isPaused(newVideoState)) { + Log.i(this, "onVideoStateChanged: newVideoState=%s, clearing pending pause requests.", + VideoProfile.videoStateToString(newVideoState)); + mVideoPauseTracker.clearPauseRequests(); + } + } } diff --git a/src/java/com/android/ims/internal/VideoPauseTracker.java b/src/java/com/android/ims/internal/VideoPauseTracker.java index d37f7fa8..a23c5901 100644 --- a/src/java/com/android/ims/internal/VideoPauseTracker.java +++ b/src/java/com/android/ims/internal/VideoPauseTracker.java @@ -150,6 +150,15 @@ public class VideoPauseTracker { } /** + * Clears pending pause requests for the tracker. + */ + public void clearPauseRequests() { + synchronized (mPauseRequestsLock) { + mPauseRequests.clear(); + } + } + + /** * Returns a string equivalent of a {@code SOURCE_*} constant. * * @param source A {@code SOURCE_*} constant. |