Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e39b926e authored by Hideki Ishii's avatar Hideki Ishii Committed by Masaya Nemoto
Browse files

Fix for button flickering issue when video call screen rotates

Issue:
Buttons flicker when rotating video call screen and full screen mode.
Because initial state of these buttons(components) are "visible".
In full screen mode, these buttons should not be "visible" when video
call screen is rotated.

This patch modifies state of these buttons to "invisible" when video
call screen rotates and isFullscreen()==True to fix the flicker issue.
And, adding "enterFullscreenMode()" for getting correct view-size when
changing layout by videocall-screen regenerated.

Test: manual - Checked that not button flickering issue when video call
screen during full screen mode rotates.
Bug: 111242931

Change-Id: I271ae3fa395fa648a89c8debc5c0a76e1a0a5ecd
parent 2a96c802
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -420,6 +420,11 @@ public class VideoCallPresenter
    InCallPresenter.getInstance().getInCallCameraManager().onCameraPermissionGranted();
  }

  @Override
  public boolean isFullscreen() {
    return InCallPresenter.getInstance().isFullscreen();
  }

  /**
   * Called when the user interacts with the UI. If a fullscreen timer is pending then we start the
   * timer from scratch to avoid having the UI disappear while the user is interacting with it.
+37 −0
Original line number Diff line number Diff line
@@ -306,6 +306,30 @@ public class VideoCallFragment extends Fragment
            updatePreviewOffView();
          }
        });

    controls.addOnLayoutChangeListener(
        new OnLayoutChangeListener() {
          @Override
          public void onLayoutChange(
              View v,
              int left,
              int top,
              int right,
              int bottom,
              int oldLeft,
              int oldTop,
              int oldRight,
              int oldBottom) {
            LogUtil.i("VideoCallFragment.onLayoutChange", "controls layout changed");
            if (getActivity() != null && getView() != null) {
              controls.removeOnLayoutChangeListener(this);
              if (isInFullscreenMode) {
                enterFullscreenMode();
              }
            }
          }
        });

    return view;
  }

@@ -334,6 +358,12 @@ public class VideoCallFragment extends Fragment
    inCallButtonUiDelegate.onInCallButtonUiReady(this);

    view.setOnSystemUiVisibilityChangeListener(this);

    if (videoCallScreenDelegate.isFullscreen()) {
        controls.setVisibility(View.INVISIBLE);
        contactGridManager.getContainerView().setVisibility(View.INVISIBLE);
        endCallButton.setVisibility(View.INVISIBLE);
    }
  }

  @Override
@@ -421,6 +451,13 @@ public class VideoCallFragment extends Fragment
        .translationY(0)
        .setInterpolator(linearOutSlowInInterpolator)
        .alpha(1)
        .withStartAction(
            new Runnable() {
              @Override
              public void run() {
                controls.setVisibility(View.VISIBLE);
              }
            })
        .start();

    // Animate onHold to the shown state.
+2 −0
Original line number Diff line number Diff line
@@ -48,4 +48,6 @@ public interface VideoCallScreenDelegate {
  void setSurfaceViews(SurfaceView preview, SurfaceView remote);

  int getDeviceOrientation();

  boolean isFullscreen();
}