diff options
| author | 2023-02-27 11:01:00 +0530 | |
|---|---|---|
| committer | 2023-03-02 15:15:06 +0530 | |
| commit | dafae2b39f961e1c5092abac1994f0941d995ff9 (patch) | |
| tree | b7d15b040fa70ab59668bbea667d4f4719f99a87 | |
| parent | 5cd5d98eb7d309198f5902d7c26f6aae71315fd7 (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>
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); |