Merge \"Don\'t make redundant launch while updating configuration\" into nyc-mr1-dev
am: 4c7b339411
Change-Id: I84bce1a3980bf78eb20f7473b4cee687481d8bf2
This commit is contained in:
@@ -18669,7 +18669,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
|
||||
synchronized(this) {
|
||||
final long origId = Binder.clearCallingIdentity();
|
||||
updateConfigurationLocked(values, null, false, true, userId);
|
||||
updateConfigurationLocked(values, null, false, true, userId, false /* deferResume */);
|
||||
Binder.restoreCallingIdentity(origId);
|
||||
}
|
||||
}
|
||||
@@ -18737,11 +18737,16 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
updateConfigurationLocked(configuration, null, false);
|
||||
}
|
||||
|
||||
boolean updateConfigurationLocked(Configuration values,
|
||||
ActivityRecord starting, boolean initLocale) {
|
||||
boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
|
||||
boolean initLocale) {
|
||||
return updateConfigurationLocked(values, starting, initLocale, false /* deferResume */);
|
||||
}
|
||||
|
||||
boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
|
||||
boolean initLocale, boolean deferResume) {
|
||||
// pass UserHandle.USER_NULL as userId because we don't persist configuration for any user
|
||||
return updateConfigurationLocked(values, starting, initLocale, false,
|
||||
UserHandle.USER_NULL);
|
||||
return updateConfigurationLocked(values, starting, initLocale, false /* persistent */,
|
||||
UserHandle.USER_NULL, deferResume);
|
||||
}
|
||||
|
||||
// To cache the list of supported system locales
|
||||
@@ -18757,8 +18762,8 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
* @param userId is only used when persistent parameter is set to true to persist configuration
|
||||
* for that particular user
|
||||
*/
|
||||
private boolean updateConfigurationLocked(Configuration values,
|
||||
ActivityRecord starting, boolean initLocale, boolean persistent, int userId) {
|
||||
private boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
|
||||
boolean initLocale, boolean persistent, int userId, boolean deferResume) {
|
||||
int changes = 0;
|
||||
|
||||
if (mWindowManager != null) {
|
||||
@@ -18886,7 +18891,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
for (int stackId : resizedStacks) {
|
||||
final Rect newBounds = mWindowManager.getBoundsForNewConfiguration(stackId);
|
||||
mStackSupervisor.resizeStackLocked(
|
||||
stackId, newBounds, null, null, false, false, !DEFER_RESUME);
|
||||
stackId, newBounds, null, null, false, false, deferResume);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21783,7 +21788,8 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
Preconditions.checkNotNull(values, "Configuration must not be null");
|
||||
Preconditions.checkArgumentNonnegative(userId, "userId " + userId + " not supported");
|
||||
synchronized (ActivityManagerService.this) {
|
||||
updateConfigurationLocked(values, null, false, true, userId);
|
||||
updateConfigurationLocked(values, null, false, true, userId,
|
||||
false /* deferResume */);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1189,7 +1189,10 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
Configuration config = mWindowManager.updateOrientationFromAppTokens(
|
||||
mService.mConfiguration,
|
||||
r.mayFreezeScreenLocked(app) ? r.appToken : null);
|
||||
mService.updateConfigurationLocked(config, r, false);
|
||||
// Deferring resume here because we're going to launch new activity shortly.
|
||||
// We don't want to perform a redundant launch of the same record while ensuring
|
||||
// configurations and trying to resume top activity of focused stack.
|
||||
mService.updateConfigurationLocked(config, r, false, true /* deferResume */);
|
||||
}
|
||||
|
||||
r.app = app;
|
||||
@@ -2004,7 +2007,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
boolean preserveWindows, boolean allowResizeInDockedMode, boolean deferResume) {
|
||||
if (stackId == DOCKED_STACK_ID) {
|
||||
resizeDockedStackLocked(bounds, tempTaskBounds, tempTaskInsetBounds, null, null,
|
||||
preserveWindows);
|
||||
preserveWindows, deferResume);
|
||||
return;
|
||||
}
|
||||
final ActivityStack stack = getStack(stackId);
|
||||
@@ -2154,8 +2157,16 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
}
|
||||
|
||||
void resizeDockedStackLocked(Rect dockedBounds, Rect tempDockedTaskBounds,
|
||||
Rect tempDockedTaskInsetBounds,
|
||||
Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds, boolean preserveWindows) {
|
||||
Rect tempDockedTaskInsetBounds, Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds,
|
||||
boolean preserveWindows) {
|
||||
resizeDockedStackLocked(dockedBounds, tempDockedTaskBounds, tempDockedTaskInsetBounds,
|
||||
tempOtherTaskBounds, tempOtherTaskInsetBounds, preserveWindows,
|
||||
false /* deferResume */);
|
||||
}
|
||||
|
||||
void resizeDockedStackLocked(Rect dockedBounds, Rect tempDockedTaskBounds,
|
||||
Rect tempDockedTaskInsetBounds, Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds,
|
||||
boolean preserveWindows, boolean deferResume) {
|
||||
|
||||
if (!mAllowDockedStackResize) {
|
||||
// Docked stack resize currently disabled.
|
||||
@@ -2198,11 +2209,13 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
if (StackId.isResizeableByDockedStack(i) && getStack(i) != null) {
|
||||
resizeStackLocked(i, tempRect, tempOtherTaskBounds,
|
||||
tempOtherTaskInsetBounds, preserveWindows,
|
||||
true /* allowResizeInDockedMode */, !DEFER_RESUME);
|
||||
true /* allowResizeInDockedMode */, deferResume);
|
||||
}
|
||||
}
|
||||
}
|
||||
stack.ensureVisibleActivitiesConfigurationLocked(r, preserveWindows);
|
||||
if (!deferResume) {
|
||||
stack.ensureVisibleActivitiesConfigurationLocked(r, preserveWindows);
|
||||
}
|
||||
} finally {
|
||||
mAllowDockedStackResize = true;
|
||||
mWindowManager.continueSurfaceLayout();
|
||||
|
||||
Reference in New Issue
Block a user