diff options
3 files changed, 29 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 17a44720deaf..842b8cdff7ed 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -24,6 +24,7 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static com.android.server.am.ActivityManagerDebugConfig.*; import static com.android.server.am.ActivityManagerService.FIRST_SUPERVISOR_STACK_MSG; import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; @@ -87,6 +88,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; +import android.os.Trace; import android.os.TransactionTooLargeException; import android.os.UserHandle; import android.os.WorkSource; @@ -2968,6 +2970,8 @@ public final class ActivityStackSupervisor implements DisplayListener { return; } + Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeStack_" + stackId); + ActivityRecord r = stack.topRunningActivityLocked(null); mTmpBounds.clear(); @@ -3051,6 +3055,8 @@ public final class ActivityStackSupervisor implements DisplayListener { resumeTopActivitiesLocked(stack, null, null); } } + + Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } void resizeTaskLocked(TaskRecord task, Rect bounds, int resizeMode) { @@ -3079,6 +3085,8 @@ public final class ActivityStackSupervisor implements DisplayListener { return; } + Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeTask_" + task.taskId); + // The stack of a task is determined by its size (fullscreen vs non-fullscreen). // Place the task in the right stack if it isn't there already based on the requested // bounds. @@ -3124,6 +3132,8 @@ public final class ActivityStackSupervisor implements DisplayListener { } } mWindowManager.resizeTask(task.taskId, bounds, task.mOverrideConfig, kept, forced); + + Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } ActivityStack createStackOnDisplay(int stackId, int displayId, boolean onTop) { diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java index d1904d80ebc5..df2e5e80b59b 100644 --- a/services/core/java/com/android/server/wm/TaskPositioner.java +++ b/services/core/java/com/android/server/wm/TaskPositioner.java @@ -22,6 +22,7 @@ import static android.app.ActivityManager.FREEFORM_WORKSPACE_STACK_ID; import static android.app.ActivityManager.RESIZE_MODE_FORCED; import static android.app.ActivityManager.RESIZE_MODE_USER; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; +import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static com.android.server.wm.WindowManagerService.DEBUG_TASK_POSITIONING; import static com.android.server.wm.WindowManagerService.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP; @@ -33,6 +34,7 @@ import android.graphics.Rect; import android.os.Looper; import android.os.Process; import android.os.RemoteException; +import android.os.Trace; import android.util.DisplayMetrics; import android.util.Slog; import android.view.Choreographer; @@ -145,10 +147,12 @@ class TaskPositioner implements DimLayer.DimLayerUser { synchronized (mService.mWindowMap) { mDragEnded = notifyMoveLocked(newX, newY); } + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "wm.TaskPositioner.resizeTask"); try { mService.mActivityManager.resizeTask( mTask.mTaskId, mWindowDragBounds, RESIZE_MODE_USER); } catch(RemoteException e) {} + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } break; case MotionEvent.ACTION_UP: { diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index c73dbaf607eb..37deffe39bea 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -16,6 +16,7 @@ package com.android.server.wm; +import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; @@ -38,6 +39,7 @@ import android.app.AppOpsManager; import android.os.PowerManager; import android.os.RemoteCallbackList; import android.os.SystemClock; +import android.os.Trace; import android.os.WorkSource; import android.util.DisplayMetrics; import android.util.TimeUtils; @@ -1465,10 +1467,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { // We want the tag name to be somewhat stable so that it is easier to correlate // in wake lock statistics. So in particular, we don't want to include the // window's hash code as in toString(). - CharSequence tag = mAttrs.getTitle(); - if (tag == null) { - tag = mAttrs.packageName; - } + final CharSequence tag = getWindowTag(); mDrawLock = mService.mPowerManager.newWakeLock( PowerManager.DRAW_WAKE_LOCK, "Window:" + tag); mDrawLock.setReferenceCounted(false); @@ -1605,6 +1604,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { } void reportResized() { + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "wm.reportResized_" + getWindowTag()); try { if (DEBUG_RESIZE || DEBUG_ORIENTATION) Slog.v(TAG, "Reporting new frame to " + this + ": " + mCompatFrame); @@ -1670,6 +1670,7 @@ final class WindowState implements WindowManagerPolicy.WindowState { mService.mPendingRemove.add(this); mService.mWindowPlacerLocked.requestTraversal(); } + Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } public void registerFocusObserver(IWindowFocusObserver observer) { @@ -1901,15 +1902,20 @@ final class WindowState implements WindowManagerPolicy.WindowState { String makeInputChannelName() { return Integer.toHexString(System.identityHashCode(this)) - + " " + mAttrs.getTitle(); + + " " + getWindowTag(); + } + + private CharSequence getWindowTag() { + CharSequence tag = mAttrs.getTitle(); + if (tag == null || tag.length() <= 0) { + tag = mAttrs.packageName; + } + return tag; } @Override public String toString() { - CharSequence title = mAttrs.getTitle(); - if (title == null || title.length() <= 0) { - title = mAttrs.packageName; - } + final CharSequence title = getWindowTag(); if (mStringNameCache == null || mLastTitle != title || mWasExiting != mExiting) { mLastTitle = title; mWasExiting = mExiting; |