summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Henry Fang <quxiangfang@google.com> 2020-07-15 15:40:08 -0700
committer Henry Fang <quxiangfang@google.com> 2020-07-15 19:06:25 -0700
commitf0e3e4f4706117998a731cb3db76bebb6d80ec3b (patch)
treec397139003e6afa3a5fa1fa2847b4e883e0a0b3f
parent6a630f39944cacd6b567ebfec04a064e594dba09 (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.java9
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];
}
}