Merge "Let TaskSnapshotWindow compute its window frame" into tm-dev
This commit is contained in:
@@ -20,8 +20,10 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
|||||||
import static android.graphics.Color.WHITE;
|
import static android.graphics.Color.WHITE;
|
||||||
import static android.graphics.Color.alpha;
|
import static android.graphics.Color.alpha;
|
||||||
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
|
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
|
||||||
|
import static android.view.ViewRootImpl.LOCAL_LAYOUT;
|
||||||
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
|
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
|
||||||
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
|
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
|
||||||
|
import static android.view.WindowLayout.UNSPECIFIED_LENGTH;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES;
|
import static android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES;
|
||||||
@@ -51,6 +53,7 @@ import android.annotation.Nullable;
|
|||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityManager.TaskDescription;
|
import android.app.ActivityManager.TaskDescription;
|
||||||
import android.app.ActivityThread;
|
import android.app.ActivityThread;
|
||||||
|
import android.app.WindowConfiguration;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@@ -77,6 +80,7 @@ import android.view.SurfaceSession;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.WindowInsets;
|
import android.view.WindowInsets;
|
||||||
|
import android.view.WindowLayout;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.WindowManagerGlobal;
|
import android.view.WindowManagerGlobal;
|
||||||
import android.window.ClientWindowFrames;
|
import android.window.ClientWindowFrames;
|
||||||
@@ -208,6 +212,8 @@ public class TaskSnapshotWindow {
|
|||||||
final IWindowSession session = WindowManagerGlobal.getWindowSession();
|
final IWindowSession session = WindowManagerGlobal.getWindowSession();
|
||||||
final SurfaceControl surfaceControl = new SurfaceControl();
|
final SurfaceControl surfaceControl = new SurfaceControl();
|
||||||
final ClientWindowFrames tmpFrames = new ClientWindowFrames();
|
final ClientWindowFrames tmpFrames = new ClientWindowFrames();
|
||||||
|
final WindowLayout windowLayout = new WindowLayout();
|
||||||
|
final Rect displayCutoutSafe = new Rect();
|
||||||
|
|
||||||
final InsetsSourceControl[] tmpControls = new InsetsSourceControl[0];
|
final InsetsSourceControl[] tmpControls = new InsetsSourceControl[0];
|
||||||
final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
|
final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
|
||||||
@@ -244,9 +250,25 @@ public class TaskSnapshotWindow {
|
|||||||
window.setOuter(snapshotSurface);
|
window.setOuter(snapshotSurface);
|
||||||
try {
|
try {
|
||||||
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout");
|
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout");
|
||||||
|
if (LOCAL_LAYOUT) {
|
||||||
|
if (!surfaceControl.isValid()) {
|
||||||
|
session.updateVisibility(window, layoutParams, View.VISIBLE,
|
||||||
|
tmpMergedConfiguration, surfaceControl, tmpInsetsState, tmpControls);
|
||||||
|
}
|
||||||
|
tmpInsetsState.getDisplayCutoutSafe(displayCutoutSafe);
|
||||||
|
final WindowConfiguration winConfig =
|
||||||
|
tmpMergedConfiguration.getMergedConfiguration().windowConfiguration;
|
||||||
|
windowLayout.computeFrames(layoutParams, tmpInsetsState, displayCutoutSafe,
|
||||||
|
winConfig.getBounds(), winConfig.getWindowingMode(), UNSPECIFIED_LENGTH,
|
||||||
|
UNSPECIFIED_LENGTH, info.requestedVisibilities,
|
||||||
|
null /* attachedWindowFrame */, 1f /* compatScale */, tmpFrames);
|
||||||
|
session.updateLayout(window, layoutParams, 0 /* flags */, tmpFrames,
|
||||||
|
UNSPECIFIED_LENGTH, UNSPECIFIED_LENGTH);
|
||||||
|
} else {
|
||||||
session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0,
|
session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0,
|
||||||
tmpFrames, tmpMergedConfiguration, surfaceControl, tmpInsetsState,
|
tmpFrames, tmpMergedConfiguration, surfaceControl, tmpInsetsState,
|
||||||
tmpControls, new Bundle());
|
tmpControls, new Bundle());
|
||||||
|
}
|
||||||
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
snapshotSurface.clearWindowSynced();
|
snapshotSurface.clearWindowSynced();
|
||||||
|
|||||||
Reference in New Issue
Block a user