am ef04ae79: Merge "Complete booting when frontmost activity is idle" into lmp-mr1-dev

* commit 'ef04ae79af58cc86c4312fac18c8a4eb24fc73ae':
  Complete booting when frontmost activity is idle
This commit is contained in:
Craig Mautner
2015-01-13 21:34:32 +00:00
committed by Android Git Automerger

View File

@@ -414,6 +414,12 @@ public final class ActivityStackSupervisor implements DisplayListener {
if (DEBUG_STACK) Slog.d(TAG, "moveHomeTask: topStack old=" + topStack + " new="
+ mFocusedStack);
}
if (mService.mBooting || !mService.mBooted) {
final ActivityRecord r = topRunningActivityLocked();
if (r != null && r.idle) {
checkFinishBootingLocked();
}
}
}
void moveHomeStackTaskToTop(int homeStackTaskType) {
@@ -2235,6 +2241,24 @@ public final class ActivityStackSupervisor implements DisplayListener {
}
}
/**
* Called when the frontmost task is idle.
* @return the state of mService.mBooting before this was called.
*/
private boolean checkFinishBootingLocked() {
final boolean booting = mService.mBooting;
boolean enableScreen = false;
mService.mBooting = false;
if (!mService.mBooted) {
mService.mBooted = true;
enableScreen = true;
}
if (booting || enableScreen) {
mService.postFinishBooting(booting, enableScreen);
}
return booting;
}
// Checked.
final ActivityRecord activityIdleInternalLocked(final IBinder token, boolean fromTimeout,
Configuration config) {
@@ -2246,7 +2270,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
int NS = 0;
int NF = 0;
boolean booting = false;
boolean enableScreen = false;
boolean activityRemoved = false;
ActivityRecord r = ActivityRecord.forToken(token);
@@ -2274,12 +2297,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
//Slog.i(TAG, "IDLE: mBooted=" + mBooted + ", fromTimeout=" + fromTimeout);
if (isFrontStack(r.task.stack) || fromTimeout) {
booting = mService.mBooting;
mService.mBooting = false;
if (!mService.mBooted) {
mService.mBooted = true;
enableScreen = true;
}
booting = checkFinishBootingLocked();
}
}
@@ -2352,10 +2370,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
//dump();
//mWindowManager.dump();
if (booting || enableScreen) {
mService.postFinishBooting(booting, enableScreen);
}
if (activityRemoved) {
resumeTopActivitiesLocked();
}
@@ -2624,6 +2638,8 @@ public final class ActivityStackSupervisor implements DisplayListener {
// before an application stack is created...Go ahead and create one on the default
// display.
stack = getStack(createStackOnDisplay(getNextStackId(), Display.DEFAULT_DISPLAY));
// Restore home stack to top.
moveHomeStack(true);
if (DEBUG_RECENTS)
Slog.v(TAG, "Created stack=" + stack + " for recents restoration.");
}