diff options
| author | 2020-07-15 15:40:08 -0700 | |
|---|---|---|
| committer | 2020-07-15 19:06:25 -0700 | |
| commit | f0e3e4f4706117998a731cb3db76bebb6d80ec3b (patch) | |
| tree | c397139003e6afa3a5fa1fa2847b4e883e0a0b3f | |
| parent | 6a630f39944cacd6b567ebfec04a064e594dba09 (diff) | |
Fix MediaCas CTS failure
TRM is checking input parameters and won't allow null executor.
Use context main executor to call Tuner Resource Manager (TRM)
Also fix ConcurrentModificationException when use HashMap.forEach to free element in hashmap.
Test: atest MediaCasTest
bug: 161391585
Change-Id: Ie5111b46b5b601f0a5b56e5828d79771e153a210
| -rw-r--r-- | media/java/android/media/MediaCas.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/media/java/android/media/MediaCas.java b/media/java/android/media/MediaCas.java index 590def4d4ced..98ca2f9c4253 100644 --- a/media/java/android/media/MediaCas.java +++ b/media/java/android/media/MediaCas.java @@ -34,7 +34,6 @@ import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerResourceManager; import android.os.Bundle; import android.os.Handler; -import android.os.HandlerExecutor; import android.os.HandlerThread; import android.os.IHwBinder; import android.os.Looper; @@ -50,6 +49,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -392,7 +392,10 @@ public final class MediaCas implements AutoCloseable { @Override public void onReclaimResources() { synchronized (mSessionMap) { - mSessionMap.forEach((casSession, sessionResourceHandle) -> casSession.close()); + List<Session> sessionList = new ArrayList<>(mSessionMap.keySet()); + for (Session casSession: sessionList) { + casSession.close(); + } } mEventHandler.sendMessage(mEventHandler.obtainMessage( EventHandler.MSG_CAS_RESOURCE_LOST)); @@ -734,7 +737,7 @@ public final class MediaCas implements AutoCloseable { ResourceClientProfile profile = new ResourceClientProfile(tvInputServiceSessionId, priorityHint); mTunerResourceManager.registerClientProfile( - profile, new HandlerExecutor(mEventHandler), mResourceListener, clientId); + profile, context.getMainExecutor(), mResourceListener, clientId); mClientId = clientId[0]; } } |