Merge "Add display sleep token information to winscope dump." into sc-v2-dev

This commit is contained in:
Issei Suzuki
2021-10-27 14:48:15 +00:00
committed by Android (Google) Code Review
4 changed files with 28 additions and 1 deletions

View File

@@ -202,7 +202,6 @@ message DisplayContentProto {
optional .com.android.server.wm.IdentifierProto resumed_activity = 24; optional .com.android.server.wm.IdentifierProto resumed_activity = 24;
repeated TaskProto tasks = 25 [deprecated=true]; repeated TaskProto tasks = 25 [deprecated=true];
optional bool display_ready = 26; optional bool display_ready = 26;
optional WindowStateProto input_method_target = 27; optional WindowStateProto input_method_target = 27;
optional WindowStateProto input_method_input_target = 28; optional WindowStateProto input_method_input_target = 28;
optional WindowStateProto input_method_control_target = 29; optional WindowStateProto input_method_control_target = 29;
@@ -212,6 +211,8 @@ message DisplayContentProto {
optional DisplayRotationProto display_rotation = 33; optional DisplayRotationProto display_rotation = 33;
optional int32 ime_policy = 34; optional int32 ime_policy = 34;
optional bool is_sleeping = 36;
repeated string sleep_tokens = 37;
} }
/* represents DisplayArea object */ /* represents DisplayArea object */

View File

@@ -1561,6 +1561,12 @@
"group": "WM_DEBUG_ORIENTATION", "group": "WM_DEBUG_ORIENTATION",
"at": "com\/android\/server\/wm\/DisplayRotation.java" "at": "com\/android\/server\/wm\/DisplayRotation.java"
}, },
"-436553282": {
"message": "Remove sleep token: tag=%s, displayId=%d",
"level": "DEBUG",
"group": "WM_DEBUG_STATES",
"at": "com\/android\/server\/wm\/RootWindowContainer.java"
},
"-415865166": { "-415865166": {
"message": "findFocusedWindow: Found new focus @ %s", "message": "findFocusedWindow: Found new focus @ %s",
"level": "VERBOSE", "level": "VERBOSE",
@@ -1669,6 +1675,12 @@
"group": "WM_DEBUG_ADD_REMOVE", "group": "WM_DEBUG_ADD_REMOVE",
"at": "com\/android\/server\/wm\/WindowState.java" "at": "com\/android\/server\/wm\/WindowState.java"
}, },
"-317761482": {
"message": "Create sleep token: tag=%s, displayId=%d",
"level": "DEBUG",
"group": "WM_DEBUG_STATES",
"at": "com\/android\/server\/wm\/RootWindowContainer.java"
},
"-317194205": { "-317194205": {
"message": "clearLockedTasks: %s", "message": "clearLockedTasks: %s",
"level": "INFO", "level": "INFO",

View File

@@ -115,10 +115,12 @@ import static com.android.server.wm.DisplayContentProto.IME_POLICY;
import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_CONTROL_TARGET; import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_CONTROL_TARGET;
import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_INPUT_TARGET; import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_INPUT_TARGET;
import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_TARGET; import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_TARGET;
import static com.android.server.wm.DisplayContentProto.IS_SLEEPING;
import static com.android.server.wm.DisplayContentProto.OPENING_APPS; import static com.android.server.wm.DisplayContentProto.OPENING_APPS;
import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY; import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY;
import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA; import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA;
import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION; import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION;
import static com.android.server.wm.DisplayContentProto.SLEEP_TOKENS;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
@@ -3293,6 +3295,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
proto.write(FOCUSED_ROOT_TASK_ID, INVALID_TASK_ID); proto.write(FOCUSED_ROOT_TASK_ID, INVALID_TASK_ID);
} }
proto.write(DISPLAY_READY, isReady()); proto.write(DISPLAY_READY, isReady());
proto.write(IS_SLEEPING, isSleeping());
for (int i = 0; i < mAllSleepTokens.size(); ++i) {
mAllSleepTokens.get(i).writeTagToProto(proto, SLEEP_TOKENS);
}
if (mImeLayeringTarget != null) { if (mImeLayeringTarget != null) {
mImeLayeringTarget.dumpDebug(proto, INPUT_METHOD_TARGET, logLevel); mImeLayeringTarget.dumpDebug(proto, INPUT_METHOD_TARGET, logLevel);
} }

View File

@@ -2700,6 +2700,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
token = new SleepToken(tag, displayId); token = new SleepToken(tag, displayId);
mSleepTokens.put(tokenKey, token); mSleepTokens.put(tokenKey, token);
display.mAllSleepTokens.add(token); display.mAllSleepTokens.add(token);
ProtoLog.d(WM_DEBUG_STATES, "Create sleep token: tag=%s, displayId=%d", tag, displayId);
} else { } else {
throw new RuntimeException("Create the same sleep token twice: " + token); throw new RuntimeException("Create the same sleep token twice: " + token);
} }
@@ -2718,6 +2719,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
return; return;
} }
ProtoLog.d(WM_DEBUG_STATES, "Remove sleep token: tag=%s, displayId=%d", token.mTag,
token.mDisplayId);
display.mAllSleepTokens.remove(token); display.mAllSleepTokens.remove(token);
if (display.mAllSleepTokens.isEmpty()) { if (display.mAllSleepTokens.isEmpty()) {
mService.updateSleepIfNeededLocked(); mService.updateSleepIfNeededLocked();
@@ -3729,6 +3732,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
return "{\"" + mTag + "\", display " + mDisplayId return "{\"" + mTag + "\", display " + mDisplayId
+ ", acquire at " + TimeUtils.formatUptime(mAcquireTime) + "}"; + ", acquire at " + TimeUtils.formatUptime(mAcquireTime) + "}";
} }
void writeTagToProto(ProtoOutputStream proto, long fieldId) {
proto.write(fieldId, mTag);
}
} }
private class RankTaskLayersRunnable implements Runnable { private class RankTaskLayersRunnable implements Runnable {