summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author pioush.kumar-IN009423 <pioush.kumar@oppo.com> 2023-02-27 11:01:00 +0530
committer pioush.kumar-IN009423 <pioush.kumar@oppo.com> 2023-03-02 15:15:06 +0530
commitdafae2b39f961e1c5092abac1994f0941d995ff9 (patch)
treeb7d15b040fa70ab59668bbea667d4f4719f99a87
parent5cd5d98eb7d309198f5902d7c26f6aae71315fd7 (diff)
Pause is getting scheduled 2 times
Problem: { 1. open sony liv app. 2. Play any video. 3. Press home. Observe app is going to PIP 4. Now in logs we can see. am_pause_activity 2 times. 5. erforming pause of activity that is not resumed: {com.jio.jioplay.tv/com.jio.jioplay.tv.activities.HomeActivity} 02-21 23:47:01.705 18593 18593 E ActivityThread: java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.jio.jioplay.tv/com.jio.jioplay.tv.activities.HomeActivity} 02-21 23:47:01.705 18593 18593 E ActivityThread: at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5342) 02-21 23:47:01.705 18593 18593 E ActivityThread: at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5302) 02-21 23:47:01.705 18593 18593 E ActivityThread: at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:53) } Solution: { 1. Need to define a variable to signify is pauseScheduled. If it is scheduled then do not schedule again for PIP. } Bug: 271360298 Signed-off-by: pioush.kumar-IN009423 <pioush.kumar@oppo.com> Change-Id: I033acec4e290875652196506f3c998d9f8c68f7f Signed-off-by: pioush.kumar-IN009423 <pioush.kumar@oppo.com>
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java2
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskFragment.java2
3 files changed, 5 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index b8486e7aa2b4..cae0234bdc7a 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -557,6 +557,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
Drawable mEnterpriseThumbnailDrawable;
+ boolean mPauseSchedulePendingForPip = false;
+
private void updateEnterpriseThumbnailDrawable(Context context) {
DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
mEnterpriseThumbnailDrawable = dpm.getResources().getDrawable(
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 12714ed51c73..14927f9eee7e 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -3583,7 +3583,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
null /* launchIntoPipHostActivity */, "enterPictureInPictureMode",
transition);
// Continue the pausing process after entering pip.
- if (r.isState(PAUSING)) {
+ if (r.isState(PAUSING) && r.mPauseSchedulePendingForPip) {
r.getTask().schedulePauseActivity(r, false /* userLeaving */,
false /* pauseImmediately */, true /* autoEnteringPip */, "auto-pip");
}
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index 1a3e7d195859..ab979ad8340a 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -1619,6 +1619,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
if (prev.attachedToProcess()) {
if (shouldAutoPip) {
+ prev.mPauseSchedulePendingForPip = true;
boolean didAutoPip = mAtmService.enterPictureInPictureMode(
prev, prev.pictureInPictureArgs, false /* fromClient */);
ProtoLog.d(WM_DEBUG_STATES, "Auto-PIP allowed, entering PIP mode "
@@ -1682,6 +1683,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
boolean pauseImmediately, boolean autoEnteringPip, String reason) {
ProtoLog.v(WM_DEBUG_STATES, "Enqueueing pending pause: %s", prev);
try {
+ prev.mPauseSchedulePendingForPip = false;
EventLogTags.writeWmPauseActivity(prev.mUserId, System.identityHashCode(prev),
prev.shortComponentName, "userLeaving=" + userLeaving, reason);