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

Commit b3bbcf25 authored by Jason Monk's avatar Jason Monk Committed by android-build-merger
Browse files

Merge \"Reduce contention of ApplicationsState locks\" into nyc-mr1-dev

am: 9e133205

Change-Id: I3ac7fca652b60ebc66e8804e31c8cfd034b8b037
parents 199290cd 9e133205
Loading
Loading
Loading
Loading
+4 −20
Original line number Diff line number Diff line
@@ -582,10 +582,10 @@ public class ApplicationsState {
        public ArrayList<AppEntry> rebuild(AppFilter filter, Comparator<AppEntry> comparator,
                boolean foreground) {
            synchronized (mRebuildSync) {
                synchronized (mEntriesMap) {
                synchronized (mRebuildingSessions) {
                    mRebuildingSessions.add(this);
                    mRebuildRequested = true;
                    mRebuildAsync = false;
                    mRebuildAsync = true;
                    mRebuildFilter = filter;
                    mRebuildComparator = comparator;
                    mRebuildForeground = foreground;
@@ -597,23 +597,7 @@ public class ApplicationsState {
                    }
                }

                // We will wait for .25s for the list to be built.
                long waitend = SystemClock.uptimeMillis()+250;

                while (mRebuildResult == null) {
                    long now = SystemClock.uptimeMillis();
                    if (now >= waitend) {
                        break;
                    }
                    try {
                        mRebuildSync.wait(waitend - now);
                    } catch (InterruptedException e) {
                    }
                }

                mRebuildAsync = true;

                return mRebuildResult;
                return null;
            }
        }

@@ -776,7 +760,7 @@ public class ApplicationsState {
        public void handleMessage(Message msg) {
            // Always try rebuilding list first thing, if needed.
            ArrayList<Session> rebuildingSessions = null;
            synchronized (mEntriesMap) {
            synchronized (mRebuildingSessions) {
                if (mRebuildingSessions.size() > 0) {
                    rebuildingSessions = new ArrayList<Session>(mRebuildingSessions);
                    mRebuildingSessions.clear();