summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSekine Yasuaki <yasuaki.sekine@sony.com>2017-07-04 16:50:09 +0900
committerMasaya Nemoto <Masaya.Nemoto@sony.com>2018-07-19 06:42:48 +0000
commited336cbda4f1a56895b88cb2874be320ec3ab4b5 (patch)
tree26323b70aae4a1723374360b5757be3f3ce3eaff
parent4d6e1080533983791a47fcc22be38231d01692e4 (diff)
Fix to update peer dimensions when video screen resumes foreground
[Issue/Cause of defect] If partner device is rotated during video screen of target device is in background, and then resumes to foreground, partner image will be shown with incorrect dimensions. Because when video screen goes to background, VideoCallPresenter stops checking CVO(Coordination of Video Orientation) of partner device. And when video screen is resumed to foreground, there is no logic to update partner image with latest peer dimensions. [How to fix] Even if video screen is in background, CVO(peer dimensions) is notified to DialerCall. Therefore DialerCall should store the dimensions. And when video screen resumes to fore, VideoCallPresenter should update the screen with correct(latest) peer dimensions. Test: manual - Checked that the partner image is shown with correct dimensions. Bug: 111575038 Change-Id: I32ff5407f1222b232b47a35e7083a473be67b468
-rw-r--r--java/com/android/incallui/VideoCallPresenter.java11
-rw-r--r--java/com/android/incallui/call/DialerCall.java16
2 files changed, 27 insertions, 0 deletions
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 5bdcd7a73..1700d530d 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -323,6 +323,17 @@ public class VideoCallPresenter
InCallPresenter.InCallState inCallState = InCallPresenter.getInstance().getInCallState();
onStateChange(inCallState, inCallState, CallList.getInstance());
isVideoCallScreenUiReady = true;
+
+ Point sourceVideoDimensions = getRemoteVideoSurfaceTexture().getSourceVideoDimensions();
+ if (sourceVideoDimensions != null && primaryCall != null) {
+ int width = primaryCall.getPeerDimensionWidth();
+ int height = primaryCall.getPeerDimensionHeight();
+ boolean updated = DialerCall.UNKNOWN_PEER_DIMENSIONS != width
+ && DialerCall.UNKNOWN_PEER_DIMENSIONS != height;
+ if (updated && (sourceVideoDimensions.x != width || sourceVideoDimensions.y != height)) {
+ onUpdatePeerDimensions(primaryCall, width, height);
+ }
+ }
}
/** Called when the user interface is no longer ready to be used. */
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 1f4e49ad8..f9afd2d54 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -126,6 +126,8 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
private static int idCounter = 0;
+ public static final int UNKNOWN_PEER_DIMENSIONS = -1;
+
/**
* A counter used to append to restricted/private/hidden calls so that users can identify them in
* a conversation. This value is reset in {@link CallList#onCallRemoved(Context, Call)} when there
@@ -386,6 +388,8 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
};
private long timeAddedMs;
+ private int peerDimensionWidth = UNKNOWN_PEER_DIMENSIONS;
+ private int peerDimensionHeight = UNKNOWN_PEER_DIMENSIONS;
public DialerCall(
Context context,
@@ -1558,6 +1562,8 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
@Override
public void onPeerDimensionsChanged(int width, int height) {
+ peerDimensionWidth = width;
+ peerDimensionHeight = height;
InCallVideoCallCallbackNotifier.getInstance().peerDimensionsChanged(this, width, height);
}
@@ -1974,4 +1980,14 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
public interface CannedTextResponsesLoadedListener {
void onCannedTextResponsesLoaded(DialerCall call);
}
+
+ /** Gets peer dimension width. */
+ public int getPeerDimensionWidth() {
+ return peerDimensionWidth;
+ }
+
+ /** Gets peer dimension height. */
+ public int getPeerDimensionHeight() {
+ return peerDimensionHeight;
+ }
}