diff options
-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. |