diff options
| author | Issei Suzuki <issei@google.com> | 2020-06-23 11:46:16 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-06-23 11:46:16 +0000 |
| commit | 16868fbef078bd760b6bc0cae59f4bc4be5fe3f0 (patch) | |
| tree | 436e9cb848c47f8f851916608ffcac075c14ef64 /core/java/android/app/ActivityView.java | |
| parent | b204ade30c290f74c9132e8344da5f7b6aad61cb (diff) | |
| parent | ea5bec73f4747df00cc30804f085dd4cf6564275 (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.java | 18 |
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 |
