summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Fang <quxiangfang@google.com>2020-12-31 00:45:45 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-12-31 00:45:45 +0000
commit1b42f73abd831896fb643dc4b207a22d6dc6d5ba (patch)
tree52d675841ee7265a9f84ee1934495b6f8dd32d3e
parentc067dc997982a929f8bee20a2ab71b02577a42b7 (diff)
parent8212f52f449cbb5e87b206d72fd1e6cbeb04dfe8 (diff)
Merge "Don't open frontend device if it's a shared frontend" am: 8212f52f44
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1538203 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Id1cc4d914efb70f7cdec2ca0f73b8e6e68c1bb20
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 37723f1254ae..b743a958828a 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -211,6 +211,7 @@ public class Tuner implements AutoCloseable {
@Nullable
private FrontendInfo mFrontendInfo;
private Integer mFrontendHandle;
+ private Boolean mIsSharedFrontend = false;
private int mFrontendType = FrontendSettings.TYPE_UNDEFINED;
private int mUserId;
private Lnb mLnb;
@@ -338,8 +339,11 @@ public class Tuner implements AutoCloseable {
*/
public void shareFrontendFromTuner(@NonNull Tuner tuner) {
mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
- mFrontendHandle = tuner.mFrontendHandle;
- mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
+ synchronized (mIsSharedFrontend) {
+ mFrontendHandle = tuner.mFrontendHandle;
+ mFrontend = tuner.mFrontend;
+ mIsSharedFrontend = true;
+ }
}
/**
@@ -370,14 +374,19 @@ public class Tuner implements AutoCloseable {
private void releaseAll() {
if (mFrontendHandle != null) {
- int res = nativeCloseFrontend(mFrontendHandle);
- if (res != Tuner.RESULT_SUCCESS) {
- TunerUtils.throwExceptionForResult(res, "failed to close frontend");
+ synchronized (mIsSharedFrontend) {
+ if (!mIsSharedFrontend) {
+ int res = nativeCloseFrontend(mFrontendHandle);
+ if (res != Tuner.RESULT_SUCCESS) {
+ TunerUtils.throwExceptionForResult(res, "failed to close frontend");
+ }
+ }
+ mIsSharedFrontend = false;
}
mTunerResourceManager.releaseFrontend(mFrontendHandle, mClientId);
FrameworkStatsLog
.write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId,
- FrameworkStatsLog.TV_TUNER_STATE_CHANGED__STATE__UNKNOWN);
+ FrameworkStatsLog.TV_TUNER_STATE_CHANGED__STATE__UNKNOWN);
mFrontendHandle = null;
mFrontend = null;
}