From bd8444d1e3386f86ac662faa71418e2cd57e1071 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Tue, 22 Sep 2020 11:39:53 -0700 Subject: [PATCH] Excessive battery usage fix. Using wake to forcefully wake up the looper instead of 1s timeout. Fixed: 168156055 Test: atest ApkVerityTest:com.android.apkverity.ApkVerityTest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest Change-Id: If65f65f9214b34bf057ed5f1877348d835251d14 Merged-In: If65f65f9214b34bf057ed5f1877348d835251d14 --- services/incremental/IncrementalService.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index f7082a9a1a0c6..f3940e609b8bc 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -305,6 +305,7 @@ IncrementalService::~IncrementalService() { } mJobCondition.notify_all(); mJobProcessor.join(); + mLooper->wake(); mCmdLooperThread.join(); mTimedQueue->stop(); // Ensure that mounts are destroyed while the service is still valid. @@ -1377,7 +1378,7 @@ bool IncrementalService::mountExistingImage(std::string_view root) { } void IncrementalService::runCmdLooper() { - constexpr auto kTimeoutMsecs = 1000; + constexpr auto kTimeoutMsecs = -1; while (mRunning.load(std::memory_order_relaxed)) { mLooper->pollAll(kTimeoutMsecs); }