Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ad5b71c authored by Tim Murray's avatar Tim Murray Committed by gitbuildkicker
Browse files

Increase UI and RenderThread priority when not using FIFO.

bug 30441279

Change-Id: I5714179236af59ce79dbe118c7870d5f1771168a
parent 59695641
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -12585,7 +12585,7 @@ public final class ActivityManagerService extends ActivityManagerNative
            synchronized (mPidsSelfLocked) {
                int pid = Binder.getCallingPid();
                proc = mPidsSelfLocked.get(pid);
                if (mUseFifoUiScheduling && proc != null && proc.renderThreadTid == 0 && tid > 0) {
                if (proc != null && proc.renderThreadTid == 0 && tid > 0) {
                    // ensure the tid belongs to the process
                    if (!Process.isThreadInProcess(pid, tid)) {
                        throw new IllegalArgumentException(
@@ -12598,8 +12598,12 @@ public final class ActivityManagerService extends ActivityManagerNative
                    // promote to FIFO now
                    if (proc.curSchedGroup == ProcessList.SCHED_GROUP_TOP_APP) {
                        if (DEBUG_OOM_ADJ) Slog.d("UI_FIFO", "Promoting " + tid + "out of band");
                        if (mUseFifoUiScheduling) {
                            Process.setThreadScheduler(proc.renderThreadTid,
                                Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
                        } else {
                            Process.setThreadPriority(proc.renderThreadTid, -10);
                        }
                    }
                } else {
                    if (DEBUG_OOM_ADJ) {
@@ -20299,6 +20303,12 @@ public final class ActivityManagerService extends ActivityManagerNative
                                        Slog.d("UI_FIFO", "Not setting RenderThread TID");
                                    }
                                }
                            } else {
                                // Boost priority for top app UI and render threads
                                Process.setThreadPriority(app.pid, -10);
                                if (app.renderThreadTid != 0) {
                                    Process.setThreadPriority(app.renderThreadTid, -10);
                                }
                            }
                        }
                    } else if (oldSchedGroup == ProcessList.SCHED_GROUP_TOP_APP &&
@@ -20317,6 +20327,12 @@ public final class ActivityManagerService extends ActivityManagerNative
                                    Process.SCHED_OTHER, 0);
                                Process.setThreadPriority(app.renderThreadTid, -4);
                            }
                        } else {
                            // Reset priority for top app UI and render threads
                            Process.setThreadPriority(app.pid, 0);
                            if (app.renderThreadTid != 0) {
                                Process.setThreadPriority(app.renderThreadTid, 0);
                            }
                        }
                    }
                } catch (Exception e) {