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

automerge: 1549346

* commit '1549346a98227c1f41fa4bd99921139f2cf97a14':
  Complete booting when frontmost activity is idle
This commit is contained in:
Craig Mautner
2015-01-13 22:11:48 +00:00
committed by android-build-merger

View File

@@ -417,6 +417,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) {
@@ -2238,6 +2244,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) {
@@ -2249,7 +2273,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);
@@ -2277,12 +2300,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();
}
}
@@ -2355,10 +2373,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
//dump();
//mWindowManager.dump();
if (booting || enableScreen) {
mService.postFinishBooting(booting, enableScreen);
}
if (activityRemoved) {
resumeTopActivitiesLocked();
}
@@ -2627,6 +2641,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.");
}