diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/TaskRecord.java | 8 |
2 files changed, 16 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 965f5b626508..f50df3a1f34f 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -902,7 +902,14 @@ final class ActivityStack { prev.task.touchActiveTime(); clearLaunchTime(prev); final ActivityRecord next = mStackSupervisor.topRunningActivityLocked(); - if (mService.mHasRecents && (next == null || next.noDisplay || next.task != prev.task || uiSleeping)) { + // In freeform mode we only update the thumbnail when there is no thumbnail yet since every + // focus change will request a thumbnail to be taken. + // Note furthermore that since windows can change their content in freeform mode all the + // time a thumbnail is possibly constantly outdated. + if (mService.mHasRecents && + (next == null || next.noDisplay || next.task != prev.task || uiSleeping) && + (!prev.task.hasThumbnail() || + prev.task.stack.mStackId != FREEFORM_WORKSPACE_STACK_ID)) { prev.updateThumbnailLocked(screenshotActivities(prev), null); } stopFullyDrawnTraceIfNeeded(); diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index 712b8cc9af6b..9cbaec53ce60 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -478,6 +478,14 @@ final class TaskRecord { } /** + * Returns true when we have a thumbnail. + * @return Returns true if there is a thumbnail. + */ + boolean hasThumbnail() { + return mLastThumbnail != null; + } + + /** * Sets the last thumbnail. * @return whether the thumbnail was set */ |