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
This commit is contained in:
Henry Fang
2020-12-31 00:45:45 +00:00
committed by Automerger Merge Worker

View File

@@ -211,6 +211,7 @@ public class Tuner implements AutoCloseable {
@Nullable @Nullable
private FrontendInfo mFrontendInfo; private FrontendInfo mFrontendInfo;
private Integer mFrontendHandle; private Integer mFrontendHandle;
private Boolean mIsSharedFrontend = false;
private int mFrontendType = FrontendSettings.TYPE_UNDEFINED; private int mFrontendType = FrontendSettings.TYPE_UNDEFINED;
private int mUserId; private int mUserId;
private Lnb mLnb; private Lnb mLnb;
@@ -338,8 +339,11 @@ public class Tuner implements AutoCloseable {
*/ */
public void shareFrontendFromTuner(@NonNull Tuner tuner) { public void shareFrontendFromTuner(@NonNull Tuner tuner) {
mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId); mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
mFrontendHandle = tuner.mFrontendHandle; synchronized (mIsSharedFrontend) {
mFrontend = nativeOpenFrontendByHandle(mFrontendHandle); mFrontendHandle = tuner.mFrontendHandle;
mFrontend = tuner.mFrontend;
mIsSharedFrontend = true;
}
} }
/** /**
@@ -370,14 +374,19 @@ public class Tuner implements AutoCloseable {
private void releaseAll() { private void releaseAll() {
if (mFrontendHandle != null) { if (mFrontendHandle != null) {
int res = nativeCloseFrontend(mFrontendHandle); synchronized (mIsSharedFrontend) {
if (res != Tuner.RESULT_SUCCESS) { if (!mIsSharedFrontend) {
TunerUtils.throwExceptionForResult(res, "failed to close frontend"); int res = nativeCloseFrontend(mFrontendHandle);
if (res != Tuner.RESULT_SUCCESS) {
TunerUtils.throwExceptionForResult(res, "failed to close frontend");
}
}
mIsSharedFrontend = false;
} }
mTunerResourceManager.releaseFrontend(mFrontendHandle, mClientId); mTunerResourceManager.releaseFrontend(mFrontendHandle, mClientId);
FrameworkStatsLog FrameworkStatsLog
.write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId, .write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId,
FrameworkStatsLog.TV_TUNER_STATE_CHANGED__STATE__UNKNOWN); FrameworkStatsLog.TV_TUNER_STATE_CHANGED__STATE__UNKNOWN);
mFrontendHandle = null; mFrontendHandle = null;
mFrontend = null; mFrontend = null;
} }