OSDN Git Service

Fix spinning TaskPersister
authorJorim Jaggi <jjaggi@google.com>
Tue, 16 May 2017 12:03:08 +0000 (14:03 +0200)
committerJorim Jaggi <jjaggi@google.com>
Tue, 16 May 2017 12:13:08 +0000 (14:13 +0200)
Wait on the lock if the queue is paused instead of
just spin-looping.

Test: Close app, make sure screenshot gets persisted.
Bug: 36631902
Change-Id: Id7940468391d6cdfc74bb9341c1639f72d469387

services/core/java/com/android/server/wm/TaskSnapshotPersister.java

index 0287070..866bfc0 100644 (file)
@@ -209,11 +209,12 @@ class TaskSnapshotPersister {
                     SystemClock.sleep(DELAY_MS);
                 }
                 synchronized (mLock) {
-                    if (!mWriteQueue.isEmpty()) {
+                    final boolean writeQueueEmpty = mWriteQueue.isEmpty();
+                    if (!writeQueueEmpty && !mPaused) {
                         continue;
                     }
                     try {
-                        mQueueIdling = true;
+                        mQueueIdling = writeQueueEmpty;
                         mLock.wait();
                         mQueueIdling = false;
                     } catch (InterruptedException e) {