Merge "When adding overlay to a task, emit an immediate inset update" into tm-dev

This commit is contained in:
Tyler Lacey
2022-04-12 16:08:44 +00:00
committed by Android (Google) Code Review
3 changed files with 23 additions and 2 deletions

View File

@@ -3427,6 +3427,12 @@
"group": "WM_DEBUG_FOCUS_LIGHT",
"at": "com\/android\/server\/wm\/WindowState.java"
},
"1288920916": {
"message": "Error sending initial insets change to WindowContainer overlay",
"level": "ERROR",
"group": "WM_DEBUG_ANIM",
"at": "com\/android\/server\/wm\/WindowContainer.java"
},
"1305412562": {
"message": "Report configuration: %s %s",
"level": "VERBOSE",

View File

@@ -3860,7 +3860,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
@AnimationType int type, @Nullable AnimationAdapter snapshotAnim);
}
void addTrustedOverlay(SurfaceControlViewHost.SurfacePackage overlay) {
void addTrustedOverlay(SurfaceControlViewHost.SurfacePackage overlay,
@Nullable WindowState initialWindowState) {
if (mOverlayHost == null) {
mOverlayHost = new TrustedOverlayHost(mWmService);
}
@@ -3876,6 +3877,20 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
"Error sending initial configuration change to WindowContainer overlay");
removeTrustedOverlay(overlay);
}
// Emit an initial WindowState so that proper insets are available to overlay views
// shortly after the overlay is added.
if (initialWindowState != null) {
final InsetsState insetsState = initialWindowState.getInsetsState();
final Rect dispBounds = getBounds();
try {
overlay.getRemoteInterface().onInsetsChanged(insetsState, dispBounds);
} catch (Exception e) {
ProtoLog.e(WM_DEBUG_ANIM,
"Error sending initial insets change to WindowContainer overlay");
removeTrustedOverlay(overlay);
}
}
}
void removeTrustedOverlay(SurfaceControlViewHost.SurfacePackage overlay) {

View File

@@ -8135,7 +8135,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (task == null) {
throw new IllegalArgumentException("no task with taskId" + taskId);
}
task.addTrustedOverlay(overlay);
task.addTrustedOverlay(overlay, task.getTopVisibleAppMainWindow());
}
}