pip: fix issue with preview overlay
pip mode now displays normally. Issues with aspect ratio will be fixed in another patch.
Change-Id: I7eec74cd94b847181a9600c76f5563ae30f10666
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index 747ee60..7e98c6f 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -111,6 +111,7 @@
private MenuItem dialPadBtn = null;
private boolean restartVideo = false;
+ private boolean restartPreview = false;
private PowerManager.WakeLock mScreenWakeLock;
private int mCurrentOrientation = 0;
@@ -242,8 +243,13 @@
@Override
public void onStart() {
super.onStart();
- if (restartVideo) {
- displayVideoSurface(true);
+ if (restartVideo && restartPreview) {
+ displayVideoSurface(true, !presenter.isPipMode());
+ restartVideo = false;
+ restartPreview = false;
+ }
+ else if (restartVideo) {
+ displayVideoSurface(true, false);
restartVideo = false;
}
}
@@ -254,6 +260,9 @@
if (binding.videoSurface.getVisibility() == View.VISIBLE) {
restartVideo = true;
}
+ if (binding.previewContainer.getVisibility() == View.VISIBLE) {
+ restartPreview = true;
+ }
}
@Nullable
@@ -449,10 +458,9 @@
}
@Override
- public void displayVideoSurface(final boolean display) {
- binding.videoSurface.setVisibility(display ? View.VISIBLE : View.GONE);
- binding.previewContainer.setVisibility(mDeviceRuntimeService.hasVideoPermission() && display ? View.VISIBLE : View.GONE);
-
+ public void displayVideoSurface(final boolean displayVideoSurface, final boolean displayPreviewContainer) {
+ binding.videoSurface.setVisibility(displayVideoSurface ? View.VISIBLE : View.GONE);
+ binding.previewContainer.setVisibility(displayPreviewContainer ? View.VISIBLE : View.GONE);
updateMenu();
}
diff --git a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
index 492f98c..da27b6b 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
@@ -262,9 +262,9 @@
}
@Override
- public void displayVideoSurface(final boolean display) {
- binding.videoSurface.setVisibility(display ? View.VISIBLE : View.GONE);
- binding.previewContainer.setVisibility(mDeviceRuntimeService.hasVideoPermission() && display ? View.VISIBLE : View.GONE);
+ public void displayVideoSurface(final boolean displayVideoSurface, final boolean displayPreviewContainer) {
+ binding.videoSurface.setVisibility(displayVideoSurface ? View.VISIBLE : View.GONE);
+ binding.previewContainer.setVisibility(displayPreviewContainer ? View.VISIBLE : View.GONE);
}
@Override
@@ -274,9 +274,8 @@
//mVideoPreview.setZOrderMediaOverlay(true);
binding.videoSurface.setZOrderMediaOverlay(false);
} else {
- binding.videoSurface.setZOrderMediaOverlay(false);
- //mVideoSurface.setZOrderMediaOverlay(true);
- //mVideoSurface.setZOrderOnTop(true);
+ binding.videoSurface.setZOrderMediaOverlay(true);
+ binding.videoSurface.setZOrderOnTop(true);
}
}
diff --git a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
index 6b80fd7..bae5ae7 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
@@ -53,6 +53,7 @@
private boolean mOnGoingCall = false;
private boolean mAudioOnly = true;
private boolean permissionChanged = false;
+ private boolean pipIsActive = false;
private int videoWidth = -1;
private int videoHeight = -1;
@@ -298,7 +299,7 @@
view.updateMenu();
if (!mAudioOnly) {
mHardwareService.setPreviewSettings();
- view.displayVideoSurface(true);
+ view.displayVideoSurface(true, mDeviceRuntimeService.hasVideoPermission());
if(permissionChanged) {
mHardwareService.switchInput(mSipCall.getCallId(), permissionChanged);
permissionChanged = false;
@@ -339,9 +340,9 @@
Log.d(TAG, "VIDEO_EVENT: " + event.start + " " + event.callId + " " + event.w + "x" + event.h);
if (event.start) {
- getView().displayVideoSurface(true);
+ getView().displayVideoSurface(true, !isPipMode() && mDeviceRuntimeService.hasVideoPermission());
} else if (mSipCall != null && mSipCall.getCallId().equals(event.callId)) {
- getView().displayVideoSurface(event.started);
+ getView().displayVideoSurface(event.started, event.started && !isPipMode() && mDeviceRuntimeService.hasVideoPermission());
if (event.started) {
videoWidth = event.w;
videoHeight = event.h;
@@ -391,12 +392,19 @@
}
}
+ public boolean isPipMode() {
+ return pipIsActive;
+ }
+
public void pipModeChanged(boolean pip) {
+ pipIsActive = pip;
if (pip) {
getView().displayHangupButton(false);
getView().displayPreviewSurface(false);
+ getView().displayVideoSurface(true, false);
} else {
getView().displayPreviewSurface(true);
+ getView().displayVideoSurface(true, mDeviceRuntimeService.hasVideoPermission());
}
}
diff --git a/ring-android/libringclient/src/main/java/cx/ring/call/CallView.java b/ring-android/libringclient/src/main/java/cx/ring/call/CallView.java
index 2b06cf9..4fd3a3f 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/call/CallView.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/call/CallView.java
@@ -26,7 +26,7 @@
void displayContactBubble(boolean display);
- void displayVideoSurface(boolean display);
+ void displayVideoSurface(boolean displayVideoSurface, boolean displayPreviewContainer);
void displayPreviewSurface(boolean display);