diff options
| -rw-r--r-- | media/java/android/media/tv/tuner/Lnb.java | 36 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/Tuner.java | 9 |
2 files changed, 25 insertions, 20 deletions
diff --git a/media/java/android/media/tv/tuner/Lnb.java b/media/java/android/media/tv/tuner/Lnb.java index f9eaabd800b1..0b9429debb62 100644 --- a/media/java/android/media/tv/tuner/Lnb.java +++ b/media/java/android/media/tv/tuner/Lnb.java @@ -264,6 +264,25 @@ public class Lnb implements AutoCloseable { } } + /* package */ void closeInternal() { + synchronized (mLock) { + if (mIsClosed) { + return; + } + int res = nativeClose(); + if (res != Tuner.RESULT_SUCCESS) { + TunerUtils.throwExceptionForResult(res, "Failed to close LNB"); + } else { + mIsClosed = true; + if (mOwner != null) { + mOwner.releaseLnb(); + mOwner = null; + } + mCallbackMap.clear(); + } + } + } + /** * Sets the LNB's power voltage. * @@ -330,22 +349,7 @@ public class Lnb implements AutoCloseable { public void close() { acquireTRMSLock("close()"); try { - synchronized (mLock) { - if (mIsClosed) { - return; - } - int res = nativeClose(); - if (res != Tuner.RESULT_SUCCESS) { - TunerUtils.throwExceptionForResult(res, "Failed to close LNB"); - } else { - mIsClosed = true; - if (mOwner != null) { - mOwner.releaseLnb(); - mOwner = null; - } - mCallbackMap.clear(); - } - } + closeInternal(); } finally { releaseTRMSLock(); } diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java index f74edbfdba6a..f28c2c17167f 100644 --- a/media/java/android/media/tv/tuner/Tuner.java +++ b/media/java/android/media/tv/tuner/Tuner.java @@ -919,7 +919,7 @@ public class Tuner implements AutoCloseable { if (DEBUG) { Log.d(TAG, "calling mLnb.close() : " + mClientId); } - mLnb.close(); + mLnb.closeInternal(); } else { if (DEBUG) { Log.d(TAG, "NOT calling mLnb.close() : " + mClientId); @@ -2353,6 +2353,7 @@ public class Tuner implements AutoCloseable { @Nullable public Lnb openLnbByName(@NonNull String name, @CallbackExecutor @NonNull Executor executor, @NonNull LnbCallback cb) { + acquireTRMSLock("openLnbByName"); mLnbLock.lock(); try { Objects.requireNonNull(name, "LNB name must not be null"); @@ -2361,7 +2362,7 @@ public class Tuner implements AutoCloseable { Lnb newLnb = nativeOpenLnbByName(name); if (newLnb != null) { if (mLnb != null) { - mLnb.close(); + mLnb.closeInternal(); mLnbHandle = null; } mLnb = newLnb; @@ -2372,6 +2373,7 @@ public class Tuner implements AutoCloseable { } return mLnb; } finally { + releaseTRMSLock(); mLnbLock.unlock(); } } @@ -2789,8 +2791,8 @@ public class Tuner implements AutoCloseable { } } + // Must be called while TRMS lock is being held /* package */ void releaseLnb() { - acquireTRMSLock("releaseLnb()"); mLnbLock.lock(); try { if (mLnbHandle != null) { @@ -2807,7 +2809,6 @@ public class Tuner implements AutoCloseable { } mLnb = null; } finally { - releaseTRMSLock(); mLnbLock.unlock(); } } |