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
CRs-Fixed: 2786919
Change-Id: If65f65f9214b34bf057ed5f1877348d835251d14
Merged-In: If65f65f9214b34bf057ed5f1877348d835251d14
(cherry picked from commit bd8444d1e3386f86ac662faa71418e2cd57e1071)
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index a5f0d04..e355a20 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -306,6 +306,7 @@
}
mJobCondition.notify_all();
mJobProcessor.join();
+ mLooper->wake();
mCmdLooperThread.join();
mTimedQueue->stop();
// Ensure that mounts are destroyed while the service is still valid.
@@ -1378,7 +1379,7 @@
}
void IncrementalService::runCmdLooper() {
- constexpr auto kTimeoutMsecs = 1000;
+ constexpr auto kTimeoutMsecs = -1;
while (mRunning.load(std::memory_order_relaxed)) {
mLooper->pollAll(kTimeoutMsecs);
}