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:
@@ -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.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user