From 0f740ec5ef32c504d4c287438f197c49f822d7b5 Mon Sep 17 00:00:00 2001 From: Jimmy Shiu Date: Thu, 29 Jul 2021 23:58:22 +0800 Subject: [PATCH] ADPF: avoid to call close() twice To get rid of error logs, avoid to call close() twice. 07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to look up tid:2585 in TidRefCountMap 07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to look up tid:2586 in TidRefCountMap 07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to look up tid:2031 in TidRefCountMap 07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to look up tid:2585 in TidRefCountMap Bug: 194775170 Test: build and check log. Change-Id: I91adf907b837382f68935b9054e19465a499049c --- aidl/power-libperfmgr/PowerHintSession.cpp | 6 +++++- aidl/power-libperfmgr/PowerHintSession.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/aidl/power-libperfmgr/PowerHintSession.cpp b/aidl/power-libperfmgr/PowerHintSession.cpp index 053aeda..e76d828 100644 --- a/aidl/power-libperfmgr/PowerHintSession.cpp +++ b/aidl/power-libperfmgr/PowerHintSession.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "PowerHintSession.h" #include "PowerSessionManager.h" @@ -238,8 +239,11 @@ ndk::ScopedAStatus PowerHintSession::resume() { } ndk::ScopedAStatus PowerHintSession::close() { + bool sessionClosedExpectedToBe = false; + if (!mSessionClosed.compare_exchange_strong(sessionClosedExpectedToBe, true)) { + return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE); + } PowerHintMonitor::getInstance()->getLooper()->removeMessages(mStaleHandler); - // Reset to (0, 1024) uclamp value -- instead of threads' original setting. setUclamp(0); PowerSessionManager::getInstance()->removePowerSession(this); updateUniveralBoostMode(); diff --git a/aidl/power-libperfmgr/PowerHintSession.h b/aidl/power-libperfmgr/PowerHintSession.h index 6ad2652..e3c0f84 100644 --- a/aidl/power-libperfmgr/PowerHintSession.h +++ b/aidl/power-libperfmgr/PowerHintSession.h @@ -108,6 +108,7 @@ class PowerHintSession : public BnPowerHintSession { sp mPowerManagerHandler; std::mutex mLock; const nanoseconds kAdpfRate; + std::atomic mSessionClosed = false; }; } // namespace pixel