summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amy Zhang <amyjojo@google.com> 2020-12-22 16:04:22 -0800
committer Amy Zhang <amyjojo@google.com> 2020-12-22 16:54:26 -0800
commitfc174636b99378f26f37f8cf85416495f98fbc6c (patch)
tree37442c70a4aab1609f08847dd69ab31f367b8f8d
parent663b6185b4fd302227e53f1c857fdc66b554e8e4 (diff)
Allow Tuner to update client priority without override the default
priority The updateResourcePriority(int, int) in Tuner used to update priority and nice value at the same time. Now we bypass the priority settings with only nice value setting in the Tuner Resource Manager when the user gives negative priority. Test: atest com.android.server.tv.tunerresourcemanager Bug: 176186744 Change-Id: I0dc1326691ac02b4dc4d8f9c0252f6150284ef82
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java4
-rw-r--r--services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java8
3 files changed, 14 insertions, 1 deletions
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index dec0709c97d8..02b6571b0802 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -454,10 +454,12 @@ public class Tuner implements AutoCloseable {
*
* <p>Tuner resource manager (TRM) uses the client priority value to decide whether it is able
* to reclaim insufficient resources from another client.
+ *
* <p>The nice value represents how much the client intends to give up the resource when an
* insufficient resource situation happens.
*
- * @param priority the new priority.
+ * @param priority the new priority. Any negative value would cause no-op on priority setting
+ * and the API would only process nice value setting in that case.
* @param niceValue the nice value.
*/
public void updateResourcePriority(int priority, int niceValue) {
diff --git a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
index 2fc17fe65775..036049ffa628 100644
--- a/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
+++ b/services/core/java/com/android/server/tv/tunerresourcemanager/ClientProfile.java
@@ -126,6 +126,9 @@ public final class ClientProfile {
}
public void setPriority(int priority) {
+ if (priority < 0) {
+ return;
+ }
mPriority = priority;
}
diff --git a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
index 1055069c746b..8f7ea87bcb41 100644
--- a/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/tv/tunerresourcemanager/TunerResourceManagerServiceTest.java
@@ -815,6 +815,14 @@ public class TunerResourceManagerServiceTest {
shareClientId1[0],
400/*priority*/,
0/*niceValue*/);
+ mTunerResourceManagerService.updateClientPriorityInternal(
+ shareClientId1[0],
+ -1/*invalid priority*/,
+ 0/*niceValue*/);
+ assertThat(mTunerResourceManagerService
+ .getClientProfile(shareClientId1[0])
+ .getPriority())
+ .isEqualTo(400);
/**** Init Frontend Resources ****/