summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-04-01 11:50:31 -0700
committer Wale Ogunwale <ogunwale@google.com> 2015-04-01 11:54:26 -0700
commit16a6279e5f1dde063707adc852f8de1e14206905 (patch)
treef97c34a9dec0c783e3c06a54afde0493b75cab14
parent222ab662051e9836b3623826fcb80ee7b5fa286f (diff)
parent2094bf7bfda56dcb9498d209fd961d7fcd63701b (diff)
resolved conflicts for merge of 2094bf7b to master
Change-Id: I1820d186ca602bb3cd21a15f3c23f7d6d309d43b
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityRecord.java20
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java10
2 files changed, 16 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 24ce190f250a..c97921f74130 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -1041,24 +1041,22 @@ final class ActivityRecord {
}
ActivityRecord getWaitingHistoryRecordLocked() {
- // First find the real culprit... if we are waiting
- // for another app to start, then we have paused dispatching
- // for this activity.
+ // First find the real culprit... if this activity is waiting for
+ // another activity to start or has stopped, then the key dispatching
+ // timeout should not be caused by this.
ActivityRecord r = this;
- if (mStackSupervisor.mWaitingVisibleActivities.contains(this)) {
+ if (mStackSupervisor.mWaitingVisibleActivities.contains(this) || stopped) {
final ActivityStack stack = mStackSupervisor.getFocusedStack();
- // Hmmm, who might we be waiting for?
- r = stack.mResumedActivity;
+ // Try to use the one which is closest to top.
+ ActivityRecord r = stack.mResumedActivity;
if (r == null) {
r = stack.mPausingActivity;
}
- // Both of those null? Fall back to 'this' again
- if (r == null) {
- r = this;
+ if (r != null) {
+ return r;
}
}
-
- return r;
+ return this;
}
/**
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index c564a6a08b48..07e3492b9780 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -650,17 +650,21 @@ public final class ActivityStackSupervisor implements DisplayListener {
}
boolean allResumedActivitiesVisible() {
+ boolean foundResumed = false;
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
final ActivityStack stack = stacks.get(stackNdx);
final ActivityRecord r = stack.mResumedActivity;
- if (r != null && (!r.nowVisible || mWaitingVisibleActivities.contains(r))) {
- return false;
+ if (r != null) {
+ if (!r.nowVisible || r.waitingVisible) {
+ return false;
+ }
+ foundResumed = true;
}
}
}
- return true;
+ return foundResumed;
}
/**