diff options
13 files changed, 266 insertions, 20 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 268e460d2b9f..bd7f8e5419eb 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -16,20 +16,22 @@ package android.view; -import static android.view.Surface.ROTATION_270; -import static android.view.Surface.ROTATION_90; import static android.graphics.Matrix.MSCALE_X; import static android.graphics.Matrix.MSCALE_Y; import static android.graphics.Matrix.MSKEW_X; import static android.graphics.Matrix.MSKEW_Y; import static android.graphics.Matrix.MTRANS_X; import static android.graphics.Matrix.MTRANS_Y; +import static android.view.Surface.ROTATION_270; +import static android.view.Surface.ROTATION_90; +import static android.view.SurfaceControlProto.HASH_CODE; +import static android.view.SurfaceControlProto.NAME; import android.annotation.Size; import android.graphics.Bitmap; import android.graphics.GraphicBuffer; -import android.graphics.PixelFormat; import android.graphics.Matrix; +import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Region; @@ -40,11 +42,13 @@ import android.os.Process; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Log; +import android.util.proto.ProtoOutputStream; import android.view.Surface.OutOfResourcesException; import com.android.internal.annotations.GuardedBy; import dalvik.system.CloseGuard; + import libcore.util.NativeAllocationRegistry; import java.io.Closeable; @@ -628,6 +632,21 @@ public class SurfaceControl implements Parcelable { nativeWriteToParcel(mNativeObject, dest); } + /** + * Write to a protocol buffer output stream. Protocol buffer message definition is at {@link + * android.view.SurfaceControlProto}. + * + * @param proto Stream to write the SurfaceControl object to. + * @param fieldId Field Id of the SurfaceControl as defined in the parent message. + * @hide + */ + public void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(HASH_CODE, System.identityHashCode(this)); + proto.write(NAME, mName); + proto.end(token); + } + public static final Creator<SurfaceControl> CREATOR = new Creator<SurfaceControl>() { public SurfaceControl createFromParcel(Parcel in) { diff --git a/core/proto/android/server/appwindowthumbnail.proto b/core/proto/android/server/appwindowthumbnail.proto new file mode 100644 index 000000000000..e67b854d0998 --- /dev/null +++ b/core/proto/android/server/appwindowthumbnail.proto @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto2"; + +import "frameworks/base/core/proto/android/server/surfaceanimator.proto"; + +package com.android.server.wm.proto; +option java_multiple_files = true; + +/** + * Represents a {@link com.android.server.wm.AppWindowThumbnail} object. + */ +message AppWindowThumbnailProto { + optional int32 width = 1; + optional int32 height = 2; + optional SurfaceAnimatorProto surface_animator = 3; +}
\ No newline at end of file diff --git a/core/proto/android/server/surfaceanimator.proto b/core/proto/android/server/surfaceanimator.proto new file mode 100644 index 000000000000..60713d7d1fe8 --- /dev/null +++ b/core/proto/android/server/surfaceanimator.proto @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto2"; + +import "frameworks/base/core/proto/android/view/surfacecontrol.proto"; + +package com.android.server.wm.proto; +option java_multiple_files = true; + +/** + * Represents a {@link com.android.server.wm.SurfaceAnimator} object. + */ +message SurfaceAnimatorProto { + optional string animation_adapter = 1; + optional .android.view.SurfaceControlProto leash = 2; + optional bool animation_start_delayed = 3; +}
\ No newline at end of file diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto index 12aca787745e..04bdc5c3820e 100644 --- a/core/proto/android/server/windowmanagerservice.proto +++ b/core/proto/android/server/windowmanagerservice.proto @@ -18,6 +18,8 @@ syntax = "proto2"; import "frameworks/base/core/proto/android/content/configuration.proto"; import "frameworks/base/core/proto/android/graphics/rect.proto"; +import "frameworks/base/core/proto/android/server/appwindowthumbnail.proto"; +import "frameworks/base/core/proto/android/server/surfaceanimator.proto"; import "frameworks/base/core/proto/android/view/displaycutout.proto"; import "frameworks/base/core/proto/android/view/displayinfo.proto"; import "frameworks/base/core/proto/android/view/windowlayoutparams.proto"; @@ -128,6 +130,12 @@ message StackProto { optional bool fills_parent = 4; optional .android.graphics.RectProto bounds = 5; optional bool animation_background_surface_is_dimming = 6; + optional bool defer_removal = 7; + optional float minimize_amount = 8; + optional bool adjusted_for_ime = 9; + optional float adjust_ime_amount = 10; + optional float adjust_divider_amount = 11; + optional .android.graphics.RectProto adjusted_bounds = 12; } /* represents Task */ @@ -138,6 +146,7 @@ message TaskProto { optional bool fills_parent = 4; optional .android.graphics.RectProto bounds = 5; optional .android.graphics.RectProto temp_inset_bounds = 6; + optional bool defer_removal = 7; } /* represents AppWindowToken */ @@ -145,6 +154,27 @@ message AppWindowTokenProto { /* obtained from ActivityRecord */ optional string name = 1; optional WindowTokenProto window_token = 2; + optional bool last_surface_showing = 3; + optional bool is_waiting_for_transition_start = 4; + optional bool is_really_animating = 5; + optional AppWindowThumbnailProto thumbnail = 6; + optional bool fills_parent = 7; + optional bool app_stopped = 8; + optional bool hidden_requested = 9; + optional bool client_hidden = 10; + optional bool defer_hiding_client = 11; + optional bool reported_drawn = 12; + optional bool reported_visible = 13; + optional int32 num_interesting_windows = 14; + optional int32 num_drawn_windows = 15; + optional bool all_drawn = 16; + optional bool last_all_drawn = 17; + optional bool removed = 18; + optional IdentifierProto starting_window = 19; + optional bool starting_displayed = 20; + optional bool starting_moved = 21; + optional bool hidden_set_from_transferred_starting_window = 22; + repeated .android.graphics.RectProto frozen_bounds = 23; } /* represents WindowToken */ @@ -152,6 +182,9 @@ message WindowTokenProto { optional WindowContainerProto window_container = 1; optional int32 hash_code = 2; repeated WindowStateProto windows = 3; + optional bool hidden = 4; + optional bool waiting_to_show = 5; + optional bool paused = 6; } /* represents WindowState */ @@ -234,6 +267,7 @@ message WindowContainerProto { optional ConfigurationContainerProto configuration_container = 1; optional int32 orientation = 2; optional bool visible = 3; + optional SurfaceAnimatorProto surface_animator = 4; } /* represents ConfigurationContainer */ diff --git a/core/proto/android/server/windowmanagertrace.proto b/core/proto/android/server/windowmanagertrace.proto index 0c65bb273809..d96953ee9ded 100644 --- a/core/proto/android/server/windowmanagertrace.proto +++ b/core/proto/android/server/windowmanagertrace.proto @@ -16,11 +16,7 @@ syntax = "proto2"; -import "frameworks/base/core/proto/android/content/configuration.proto"; -import "frameworks/base/core/proto/android/graphics/rect.proto"; import "frameworks/base/core/proto/android/server/windowmanagerservice.proto"; -import "frameworks/base/core/proto/android/view/displayinfo.proto"; -import "frameworks/base/core/proto/android/view/windowlayoutparams.proto"; package com.android.server.wm.proto; diff --git a/core/proto/android/view/surfacecontrol.proto b/core/proto/android/view/surfacecontrol.proto new file mode 100644 index 000000000000..9288b4fc3671 --- /dev/null +++ b/core/proto/android/view/surfacecontrol.proto @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto2"; +package android.view; + +option java_multiple_files = true; + +/** + * Represents a {@link android.view.SurfaceControl} object. + */ +message SurfaceControlProto { + optional int32 hash_code = 1; + optional string name = 2; +} diff --git a/services/core/java/com/android/server/wm/AppWindowThumbnail.java b/services/core/java/com/android/server/wm/AppWindowThumbnail.java index 487b52ca02b9..db956344e5ac 100644 --- a/services/core/java/com/android/server/wm/AppWindowThumbnail.java +++ b/services/core/java/com/android/server/wm/AppWindowThumbnail.java @@ -20,12 +20,16 @@ import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.MAX_ANIMATION_DURATION; +import static com.android.server.wm.proto.AppWindowThumbnailProto.HEIGHT; +import static com.android.server.wm.proto.AppWindowThumbnailProto.SURFACE_ANIMATOR; +import static com.android.server.wm.proto.AppWindowThumbnailProto.WIDTH; import android.graphics.GraphicBuffer; import android.graphics.PixelFormat; import android.graphics.Point; import android.os.Binder; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl.Builder; @@ -114,6 +118,22 @@ class AppWindowThumbnail implements Animatable { mSurfaceControl.destroy(); } + /** + * Write to a protocol buffer output stream. Protocol buffer message definition is at {@link + * com.android.server.wm.proto.AppWindowThumbnailProto}. + * + * @param proto Stream to write the AppWindowThumbnail object to. + * @param fieldId Field Id of the AppWindowThumbnail as defined in the parent message. + * @hide + */ + void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(WIDTH, mWidth); + proto.write(HEIGHT, mHeight); + mSurfaceAnimator.writeToProto(proto, SURFACE_ANIMATOR); + proto.end(token); + } + @Override public Transaction getPendingTransaction() { return mAppToken.getPendingTransaction(); diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index fc0564d35a3f..f2098dc3ce4f 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -51,7 +51,28 @@ import static com.android.server.wm.WindowManagerService.H.NOTIFY_ACTIVITY_DRAWN import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_WILL_PLACE_SURFACES; import static com.android.server.wm.WindowManagerService.logWithStack; +import static com.android.server.wm.proto.AppWindowTokenProto.ALL_DRAWN; +import static com.android.server.wm.proto.AppWindowTokenProto.APP_STOPPED; +import static com.android.server.wm.proto.AppWindowTokenProto.CLIENT_HIDDEN; +import static com.android.server.wm.proto.AppWindowTokenProto.DEFER_HIDING_CLIENT; +import static com.android.server.wm.proto.AppWindowTokenProto.FILLS_PARENT; +import static com.android.server.wm.proto.AppWindowTokenProto.FROZEN_BOUNDS; +import static com.android.server.wm.proto.AppWindowTokenProto.HIDDEN_REQUESTED; +import static com.android.server.wm.proto.AppWindowTokenProto.HIDDEN_SET_FROM_TRANSFERRED_STARTING_WINDOW; +import static com.android.server.wm.proto.AppWindowTokenProto.IS_REALLY_ANIMATING; +import static com.android.server.wm.proto.AppWindowTokenProto.IS_WAITING_FOR_TRANSITION_START; +import static com.android.server.wm.proto.AppWindowTokenProto.LAST_ALL_DRAWN; +import static com.android.server.wm.proto.AppWindowTokenProto.LAST_SURFACE_SHOWING; import static com.android.server.wm.proto.AppWindowTokenProto.NAME; +import static com.android.server.wm.proto.AppWindowTokenProto.NUM_DRAWN_WINDOWS; +import static com.android.server.wm.proto.AppWindowTokenProto.NUM_INTERESTING_WINDOWS; +import static com.android.server.wm.proto.AppWindowTokenProto.REMOVED; +import static com.android.server.wm.proto.AppWindowTokenProto.REPORTED_DRAWN; +import static com.android.server.wm.proto.AppWindowTokenProto.REPORTED_VISIBLE; +import static com.android.server.wm.proto.AppWindowTokenProto.STARTING_DISPLAYED; +import static com.android.server.wm.proto.AppWindowTokenProto.STARTING_MOVED; +import static com.android.server.wm.proto.AppWindowTokenProto.STARTING_WINDOW; +import static com.android.server.wm.proto.AppWindowTokenProto.THUMBNAIL; import static com.android.server.wm.proto.AppWindowTokenProto.WINDOW_TOKEN; import android.annotation.CallSuper; @@ -1936,6 +1957,34 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree final long token = proto.start(fieldId); writeNameToProto(proto, NAME); super.writeToProto(proto, WINDOW_TOKEN, trim); + proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing); + proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart()); + proto.write(IS_REALLY_ANIMATING, isReallyAnimating()); + if (mThumbnail != null){ + mThumbnail.writeToProto(proto, THUMBNAIL); + } + proto.write(FILLS_PARENT, mFillsParent); + proto.write(APP_STOPPED, mAppStopped); + proto.write(HIDDEN_REQUESTED, hiddenRequested); + proto.write(CLIENT_HIDDEN, mClientHidden); + proto.write(DEFER_HIDING_CLIENT, mDeferHidingClient); + proto.write(REPORTED_DRAWN, reportedDrawn); + proto.write(REPORTED_VISIBLE, reportedVisible); + proto.write(NUM_INTERESTING_WINDOWS, mNumInterestingWindows); + proto.write(NUM_DRAWN_WINDOWS, mNumDrawnWindows); + proto.write(ALL_DRAWN, allDrawn); + proto.write(LAST_ALL_DRAWN, mLastAllDrawn); + proto.write(REMOVED, removed); + if (startingWindow != null){ + startingWindow.writeIdentifierToProto(proto, STARTING_WINDOW); + } + proto.write(STARTING_DISPLAYED, startingDisplayed); + proto.write(STARTING_MOVED, startingMoved); + proto.write(HIDDEN_SET_FROM_TRANSFERRED_STARTING_WINDOW, + mHiddenSetFromTransferredStartingWindow); + for (Rect bounds : mFrozenBounds) { + bounds.writeToProto(proto, FROZEN_BOUNDS); + } proto.end(token); } diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java index e67cdbaac35b..10f1c3a37dcf 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimator.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java @@ -19,11 +19,14 @@ package com.android.server.wm; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import static com.android.server.wm.proto.SurfaceAnimatorProto.ANIMATION_ADAPTER; +import static com.android.server.wm.proto.SurfaceAnimatorProto.ANIMATION_START_DELAYED; +import static com.android.server.wm.proto.SurfaceAnimatorProto.LEASH; import android.annotation.NonNull; import android.annotation.Nullable; -import android.util.ArrayMap; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; @@ -309,6 +312,24 @@ class SurfaceAnimator { return leash; } + /** + * Write to a protocol buffer output stream. Protocol buffer message definition is at {@link + * com.android.server.wm.proto.SurfaceAnimatorProto}. + * + * @param proto Stream to write the SurfaceAnimator object to. + * @param fieldId Field Id of the SurfaceAnimator as defined in the parent message. + * @hide + */ + void writeToProto(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + proto.write(ANIMATION_ADAPTER, mAnimation != null ? mAnimation.toString() : "null"); + if (mLeash != null){ + mLeash.writeToProto(proto, LEASH); + } + proto.write(ANIMATION_START_DELAYED, mAnimationStartDelayed); + proto.end(token); + } + void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mAnimation="); pw.print(mAnimation); pw.print(" mLeash="); pw.println(mLeash); diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 3c96ca17c187..0628436a4204 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -22,13 +22,13 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRA import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.res.Configuration.EMPTY; - import static com.android.server.EventLogTags.WM_TASK_REMOVED; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STACK; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.proto.TaskProto.APP_WINDOW_TOKENS; import static com.android.server.wm.proto.TaskProto.BOUNDS; +import static com.android.server.wm.proto.TaskProto.DEFER_REMOVAL; import static com.android.server.wm.proto.TaskProto.FILLS_PARENT; import static com.android.server.wm.proto.TaskProto.ID; import static com.android.server.wm.proto.TaskProto.TEMP_INSET_BOUNDS; @@ -670,6 +670,7 @@ class Task extends WindowContainer<AppWindowToken> { proto.write(FILLS_PARENT, matchParentBounds()); getBounds().writeToProto(proto, BOUNDS); mTempInsetBounds.writeToProto(proto, TEMP_INSET_BOUNDS); + proto.write(DEFER_REMOVAL, mDeferRemoval); proto.end(token); } diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index bdda944f236b..7024fb1e5aed 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -16,8 +16,8 @@ package com.android.server.wm; -import static android.app.ActivityManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT; import static android.app.ActivityManager.SPLIT_SCREEN_CREATE_MODE_BOTTOM_OR_RIGHT; +import static android.app.ActivityManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; @@ -31,14 +31,19 @@ import static android.view.WindowManager.DOCKED_INVALID; import static android.view.WindowManager.DOCKED_LEFT; import static android.view.WindowManager.DOCKED_RIGHT; import static android.view.WindowManager.DOCKED_TOP; - import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TASK_MOVEMENT; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import static com.android.server.wm.proto.StackProto.ADJUSTED_BOUNDS; +import static com.android.server.wm.proto.StackProto.ADJUSTED_FOR_IME; +import static com.android.server.wm.proto.StackProto.ADJUST_DIVIDER_AMOUNT; +import static com.android.server.wm.proto.StackProto.ADJUST_IME_AMOUNT; import static com.android.server.wm.proto.StackProto.ANIMATION_BACKGROUND_SURFACE_IS_DIMMING; import static com.android.server.wm.proto.StackProto.BOUNDS; +import static com.android.server.wm.proto.StackProto.DEFER_REMOVAL; import static com.android.server.wm.proto.StackProto.FILLS_PARENT; import static com.android.server.wm.proto.StackProto.ID; +import static com.android.server.wm.proto.StackProto.MINIMIZE_AMOUNT; import static com.android.server.wm.proto.StackProto.TASKS; import static com.android.server.wm.proto.StackProto.WINDOW_CONTAINER; @@ -1308,6 +1313,12 @@ public class TaskStack extends WindowContainer<Task> implements proto.write(FILLS_PARENT, matchParentBounds()); getRawBounds().writeToProto(proto, BOUNDS); proto.write(ANIMATION_BACKGROUND_SURFACE_IS_DIMMING, mAnimationBackgroundSurfaceIsShown); + proto.write(DEFER_REMOVAL, mDeferRemoval); + proto.write(MINIMIZE_AMOUNT, mMinimizeAmount); + proto.write(ADJUSTED_FOR_IME, mAdjustedForIme); + proto.write(ADJUST_IME_AMOUNT, mAdjustImeAmount); + proto.write(ADJUST_DIVIDER_AMOUNT, mAdjustDividerAmount); + mAdjustedBounds.writeToProto(proto, ADJUSTED_BOUNDS); proto.end(token); } diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 5548f3d72786..c267c70c9e5f 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -19,26 +19,26 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; +import static android.view.SurfaceControl.Transaction; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.proto.WindowContainerProto.CONFIGURATION_CONTAINER; import static com.android.server.wm.proto.WindowContainerProto.ORIENTATION; +import static com.android.server.wm.proto.WindowContainerProto.SURFACE_ANIMATOR; import static com.android.server.wm.proto.WindowContainerProto.VISIBLE; -import static android.view.SurfaceControl.Transaction; import android.annotation.CallSuper; import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; +import android.util.Pools; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import android.view.MagnificationSpec; import android.view.SurfaceControl; import android.view.SurfaceControl.Builder; import android.view.SurfaceSession; -import android.util.Pools; - -import android.util.proto.ProtoOutputStream; import com.android.internal.util.ToBooleanFunction; import com.android.server.wm.SurfaceAnimator.Animatable; @@ -971,6 +971,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< super.writeToProto(proto, CONFIGURATION_CONTAINER, trim); proto.write(ORIENTATION, mOrientation); proto.write(VISIBLE, isVisible()); + mSurfaceAnimator.writeToProto(proto, SURFACE_ANIMATOR); proto.end(token); } diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index bad9bf53fc3b..172efdcb22ac 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -16,11 +16,7 @@ package com.android.server.wm; -import android.annotation.CallSuper; -import android.util.proto.ProtoOutputStream; -import java.util.Comparator; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; - import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_MOVEMENT; @@ -28,15 +24,20 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL; import static com.android.server.wm.proto.WindowTokenProto.HASH_CODE; +import static com.android.server.wm.proto.WindowTokenProto.HIDDEN; +import static com.android.server.wm.proto.WindowTokenProto.PAUSED; +import static com.android.server.wm.proto.WindowTokenProto.WAITING_TO_SHOW; import static com.android.server.wm.proto.WindowTokenProto.WINDOWS; import static com.android.server.wm.proto.WindowTokenProto.WINDOW_CONTAINER; +import android.annotation.CallSuper; import android.os.Debug; import android.os.IBinder; import android.util.Slog; -import android.view.SurfaceControl; +import android.util.proto.ProtoOutputStream; import java.io.PrintWriter; +import java.util.Comparator; /** * Container of a set of related windows in the window manager. Often this is an AppWindowToken, @@ -276,6 +277,9 @@ class WindowToken extends WindowContainer<WindowState> { final WindowState w = mChildren.get(i); w.writeToProto(proto, WINDOWS, trim); } + proto.write(HIDDEN, mHidden); + proto.write(WAITING_TO_SHOW, waitingToShow); + proto.write(PAUSED, paused); proto.end(token); } |