diff options
| author | 2020-12-22 16:04:22 -0800 | |
|---|---|---|
| committer | 2020-12-22 16:54:26 -0800 | |
| commit | fc174636b99378f26f37f8cf85416495f98fbc6c (patch) | |
| tree | 37442c70a4aab1609f08847dd69ab31f367b8f8d | |
| parent | 663b6185b4fd302227e53f1c857fdc66b554e8e4 (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
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 ****/ |