From 961d1e46bef8306e48ad43b93082eaa68a477936 Mon Sep 17 00:00:00 2001 From: Henry Fang Date: Thu, 13 Apr 2023 23:38:27 +0000 Subject: [PATCH] unlink IResourcesReclaimListener when remove client Change-Id: I5ff86d6a9a8c02f669ac689eb00ab65da61b0d59 bug: 277876277 Test: manaul --- .../TunerResourceManagerService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java index 2d3928ca57213..8f416082374ee 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java @@ -2237,7 +2237,14 @@ public class TunerResourceManagerService extends SystemService implements IBinde } clearAllResourcesAndClientMapping(getClientProfile(clientId)); mClientProfiles.remove(clientId); - mListeners.remove(clientId); + + // it may be called by unregisterClientProfileInternal under test + synchronized (mLock) { + ResourcesReclaimListenerRecord record = mListeners.remove(clientId); + if (record != null) { + record.getListener().asBinder().unlinkToDeath(record, 0); + } + } } private void clearFrontendAndClientMapping(ClientProfile profile) {