diff --git a/core/api/current.txt b/core/api/current.txt index f26f8399a6d7d..2e5c86649820f 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -32329,12 +32329,7 @@ package android.os { public static class PerformanceHintManager.Session implements java.io.Closeable { method public void close(); method public void reportActualWorkDuration(long); - method public void sendHint(int); method public void updateTargetWorkDuration(long); - field public static final int CPU_LOAD_DOWN = 1; // 0x1 - field public static final int CPU_LOAD_RESET = 2; // 0x2 - field public static final int CPU_LOAD_RESUME = 3; // 0x3 - field public static final int CPU_LOAD_UP = 0; // 0x0 } public final class PersistableBundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable { diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 002032ae10c38..1f294e027f925 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1835,6 +1835,14 @@ package android.os { method public static java.io.File getFile(java.io.FileDescriptor) throws java.io.IOException; } + public static class PerformanceHintManager.Session implements java.io.Closeable { + method public void sendHint(int); + field public static final int CPU_LOAD_DOWN = 1; // 0x1 + field public static final int CPU_LOAD_RESET = 2; // 0x2 + field public static final int CPU_LOAD_RESUME = 3; // 0x3 + field public static final int CPU_LOAD_UP = 0; // 0x0 + } + public final class PowerManager { method public boolean areAutoPowerSaveModesEnabled(); method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_LOW_POWER_STANDBY, android.Manifest.permission.DEVICE_POWER}) public void forceLowPowerStandbyActive(boolean); diff --git a/core/java/android/os/PerformanceHintManager.java b/core/java/android/os/PerformanceHintManager.java index 86135bcb0abfd..85d6d83ef9e9d 100644 --- a/core/java/android/os/PerformanceHintManager.java +++ b/core/java/android/os/PerformanceHintManager.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemService; +import android.annotation.TestApi; import android.content.Context; import com.android.internal.util.Preconditions; @@ -113,24 +114,36 @@ public final class PerformanceHintManager { * This hint indicates a sudden increase in CPU workload intensity. It means * that this hint session needs extra CPU resources immediately to meet the * target duration for the current work cycle. + * + * @hide */ + @TestApi public static final int CPU_LOAD_UP = 0; /** * This hint indicates a decrease in CPU workload intensity. It means that * this hint session can reduce CPU resources and still meet the target duration. + * + * @hide */ + @TestApi public static final int CPU_LOAD_DOWN = 1; - /* + /** * This hint indicates an upcoming CPU workload that is completely changed and * unknown. It means that the hint session should reset CPU resources to a known * baseline to prepare for an arbitrary load, and must wake up if inactive. + * + * @hide */ + @TestApi public static final int CPU_LOAD_RESET = 2; - /* + /** * This hint indicates that the most recent CPU workload is resuming after a * period of inactivity. It means that the hint session should allocate similar * CPU resources to what was used previously, and must wake up if inactive. + * + * @hide */ + @TestApi public static final int CPU_LOAD_RESUME = 3; /** @hide */ @@ -196,7 +209,10 @@ public final class PerformanceHintManager { * Sends performance hints to inform the hint session of changes in the workload. * * @param hint The hint to send to the session. + * + * @hide */ + @TestApi public void sendHint(@Hint int hint) { Preconditions.checkArgumentNonNegative(hint, "the hint ID should be at least" + " zero."); diff --git a/libs/hwui/renderthread/HintSessionWrapper.cpp b/libs/hwui/renderthread/HintSessionWrapper.cpp index edacef04b50a6..94c9d94a7c261 100644 --- a/libs/hwui/renderthread/HintSessionWrapper.cpp +++ b/libs/hwui/renderthread/HintSessionWrapper.cpp @@ -17,6 +17,7 @@ #include "HintSessionWrapper.h" #include +#include #include #include diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 9b0f0203f42b9..4e6a0c540f497 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -330,7 +330,6 @@ LIBANDROID { APerformanceHint_updateTargetWorkDuration; # introduced=Tiramisu APerformanceHint_reportActualWorkDuration; # introduced=Tiramisu APerformanceHint_closeSession; # introduced=Tiramisu - APerformanceHint_sendHint; # introduced=UpsideDownCake local: *; }; @@ -338,6 +337,7 @@ LIBANDROID { LIBANDROID_PLATFORM { global: APerformanceHint_setIHintManagerForTesting; + APerformanceHint_sendHint; extern "C++" { ASurfaceControl_registerSurfaceStatsListener*; ASurfaceControl_unregisterSurfaceStatsListener*; diff --git a/native/android/performance_hint.cpp b/native/android/performance_hint.cpp index 40eb507a52139..95b7513caa306 100644 --- a/native/android/performance_hint.cpp +++ b/native/android/performance_hint.cpp @@ -263,14 +263,14 @@ int APerformanceHint_reportActualWorkDuration(APerformanceHintSession* session, return session->reportActualWorkDuration(actualDurationNanos); } -int APerformanceHint_sendHint(APerformanceHintSession* session, int32_t hint) { - return session->sendHint(hint); -} - void APerformanceHint_closeSession(APerformanceHintSession* session) { delete session; } +int APerformanceHint_sendHint(void* session, int32_t hint) { + return reinterpret_cast(session)->sendHint(hint); +} + void APerformanceHint_setIHintManagerForTesting(void* iManager) { delete gHintManagerForTesting; gHintManagerForTesting = nullptr;