summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityView.java
diff options
context:
space:
mode:
authorIssei Suzuki <issei@google.com>2020-06-23 11:46:16 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-06-23 11:46:16 +0000
commit16868fbef078bd760b6bc0cae59f4bc4be5fe3f0 (patch)
tree436e9cb848c47f8f851916608ffcac075c14ef64 /core/java/android/app/ActivityView.java
parentb204ade30c290f74c9132e8344da5f7b6aad61cb (diff)
parentea5bec73f4747df00cc30804f085dd4cf6564275 (diff)
Merge "Update virtual display size before turning it on." into rvc-dev
Diffstat (limited to 'core/java/android/app/ActivityView.java')
-rw-r--r--core/java/android/app/ActivityView.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index b749c3504811..98a23f2b0075 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -33,7 +33,10 @@ import android.hardware.display.VirtualDisplay;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.AttributeSet;
+import android.util.DisplayMetrics;
import android.util.Log;
+import android.view.Display;
+import android.view.DisplayInfo;
import android.view.IWindow;
import android.view.IWindowManager;
import android.view.KeyEvent;
@@ -407,6 +410,9 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd
}
private class SurfaceCallback implements SurfaceHolder.Callback {
+ private final DisplayInfo mTempDisplayInfo = new DisplayInfo();
+ private final DisplayMetrics mTempMetrics = new DisplayMetrics();
+
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if (!mTaskEmbedder.isInitialized()) {
@@ -415,13 +421,21 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd
mTmpTransaction.reparent(mTaskEmbedder.getSurfaceControl(),
mSurfaceView.getSurfaceControl()).apply();
}
+ mTaskEmbedder.resizeTask(getWidth(), getHeight());
mTaskEmbedder.start();
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) {
- mTaskEmbedder.resizeTask(width, height);
- mTaskEmbedder.notifyBoundsChanged();
+ final Display display = getVirtualDisplay().getDisplay();
+ if (!display.getDisplayInfo(mTempDisplayInfo)) {
+ return;
+ }
+ mTempDisplayInfo.getAppMetrics(mTempMetrics);
+ if (width != mTempMetrics.widthPixels || height != mTempMetrics.heightPixels) {
+ mTaskEmbedder.resizeTask(width, height);
+ mTaskEmbedder.notifyBoundsChanged();
+ }
}
@Override