diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/OomAdjuster.java | 11 |
2 files changed, 16 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 3c95b9a02557..74437cd3c2ef 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -8274,7 +8274,16 @@ public class ActivityManagerService extends IActivityManager.Stub setThreadScheduler(proc.getRenderThreadTid(), SCHED_FIFO | SCHED_RESET_ON_FORK, 1); } else { - setThreadPriority(proc.getRenderThreadTid(), THREAD_PRIORITY_TOP_APP_BOOST); + if (Flags.resetOnForkEnabled()) { + if (Process.getThreadScheduler(proc.getRenderThreadTid()) + == Process.SCHED_OTHER) { + Process.setThreadScheduler(proc.getRenderThreadTid(), + Process.SCHED_OTHER | Process.SCHED_RESET_ON_FORK, + 0); + } + } + setThreadPriority(proc.getRenderThreadTid(), + THREAD_PRIORITY_TOP_APP_BOOST); } } } else { diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 796de1982fe5..4073ab848f81 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -459,12 +459,13 @@ public class OomAdjuster { void setThreadPriority(int tid, int priority) { if (Flags.resetOnForkEnabled()) { - Process.setThreadScheduler(tid, - Process.SCHED_OTHER | Process.SCHED_RESET_ON_FORK, - priority); - } else { - Process.setThreadPriority(tid, priority); + if (Process.getThreadScheduler(tid) == Process.SCHED_OTHER) { + Process.setThreadScheduler(tid, + Process.SCHED_OTHER | Process.SCHED_RESET_ON_FORK, + 0); + } } + Process.setThreadPriority(tid, priority); } } |