diff options
author | Henry Fang <quxiangfang@google.com> | 2020-12-31 01:23:56 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-12-31 01:23:56 +0000 |
commit | 93d480caf9fd4ab3d73dc80c95516f8fb278be4f (patch) | |
tree | e847ced609a95a5a49f7b714d54b4d874937daaa /media/java | |
parent | 0a9f4b4ff07025f3757794155ef4c9db5fd1abe1 (diff) | |
parent | 1b42f73abd831896fb643dc4b207a22d6dc6d5ba (diff) |
Merge "Don't open frontend device if it's a shared frontend" am: 8212f52f44 am: 1b42f73abd
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1538203
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I66e53b800b259f49cc38b814fdd00f0c0765342a
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/tv/tuner/Tuner.java | 21 |
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; } |