summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/tv/tuner/Lnb.java36
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java9
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();
}
}