Loading core/java/android/view/SurfaceControl.java +6 −18 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.graphics.Region; import android.gui.BorderSettings; import android.gui.BoxShadowSettings; import android.gui.DropInputMode; import android.gui.EarlyWakeupInfo; import android.gui.StalledTransactionInfo; import android.gui.TrustedOverlay; import android.hardware.DataSpace; Loading @@ -70,7 +69,6 @@ import android.os.IBinder; import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; import android.util.ArrayMap; import android.util.Log; import android.util.Slog; Loading Loading @@ -131,8 +129,8 @@ public final class SurfaceControl implements Parcelable { long otherTransactionObj); private static native void nativeClearTransaction(long transactionObj); private static native void nativeSetAnimationTransaction(long transactionObj); private static native void nativeSetEarlyWakeupStart(long transactionObj, Parcel request); private static native void nativeSetEarlyWakeupEnd(long transactionObj, Parcel request); private static native void nativeSetEarlyWakeupStart(long transactionObj); private static native void nativeSetEarlyWakeupEnd(long transactionObj); private static native long nativeGetTransactionId(long transactionObj); private static native void nativeSetLayer(long transactionObj, long nativeObject, int zorder); Loading Loading @@ -4126,14 +4124,8 @@ public final class SurfaceControl implements Parcelable { * @hide */ @RequiresPermission(Manifest.permission.WAKEUP_SURFACE_FLINGER) public Transaction setEarlyWakeupStart(@NonNull EarlyWakeupInfo info) { Parcel infoParcel = Parcel.obtain(); info.writeToParcel(infoParcel, 0); infoParcel.setDataPosition(0); nativeSetEarlyWakeupStart(mNativeObject, infoParcel); Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_APP, "EarlyWakeup", "setEarlyWakeupStart: called by " + info.trace + " with " + info.token, 0); public Transaction setEarlyWakeupStart() { nativeSetEarlyWakeupStart(mNativeObject); return this; } Loading @@ -4143,12 +4135,8 @@ public final class SurfaceControl implements Parcelable { * @hide */ @RequiresPermission(Manifest.permission.WAKEUP_SURFACE_FLINGER) public Transaction setEarlyWakeupEnd(@NonNull EarlyWakeupInfo info) { Parcel infoParcel = Parcel.obtain(); info.writeToParcel(infoParcel, 0); infoParcel.setDataPosition(0); nativeSetEarlyWakeupEnd(mNativeObject, infoParcel); Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_APP, "EarlyWakeup", 0); public Transaction setEarlyWakeupEnd() { nativeSetEarlyWakeupEnd(mNativeObject); return this; } Loading core/java/android/view/SyncRtSurfaceTransactionApplier.java +7 −13 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.view; import android.annotation.SuppressLint; import android.graphics.Matrix; import android.graphics.Rect; import android.gui.EarlyWakeupInfo; import android.view.SurfaceControl.Transaction; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -140,10 +139,10 @@ public class SyncRtSurfaceTransactionApplier { } } if ((params.flags & FLAG_EARLY_WAKEUP_START) != 0) { t.setEarlyWakeupStart(params.earlyWakeupInfo); t.setEarlyWakeupStart(); } if ((params.flags & FLAG_EARLY_WAKEUP_END) != 0) { t.setEarlyWakeupEnd(params.earlyWakeupInfo); t.setEarlyWakeupEnd(); } if ((params.flags & FLAG_OPAQUE) != 0) { t.setOpaque(params.surface, params.opaque); Loading Loading @@ -194,7 +193,6 @@ public class SyncRtSurfaceTransactionApplier { boolean visible; boolean opaque; Transaction mergeTransaction; EarlyWakeupInfo earlyWakeupInfo; /** * @param surface The surface to modify. Loading Loading @@ -299,8 +297,7 @@ public class SyncRtSurfaceTransactionApplier { * wakes up earlier to compose surfaces. * @return this Builder */ public Builder withEarlyWakeupStart(EarlyWakeupInfo earlyWakeupInfo) { this.earlyWakeupInfo = earlyWakeupInfo; public Builder withEarlyWakeupStart() { flags |= FLAG_EARLY_WAKEUP_START; return this; } Loading @@ -309,8 +306,7 @@ public class SyncRtSurfaceTransactionApplier { * Removes the early wake up hint set by earlyWakeupStart. * @return this Builder */ public Builder withEarlyWakeupEnd(EarlyWakeupInfo earlyWakeupInfo) { this.earlyWakeupInfo = earlyWakeupInfo; public Builder withEarlyWakeupEnd() { flags |= FLAG_EARLY_WAKEUP_END; return this; } Loading @@ -331,14 +327,15 @@ public class SyncRtSurfaceTransactionApplier { public SurfaceParams build() { return new SurfaceParams(surface, flags, alpha, matrix, windowCrop, layer, cornerRadius, backgroundBlurRadius, backgroundBlurScale, visible, mergeTransaction, opaque, earlyWakeupInfo); mergeTransaction, opaque); } } private SurfaceParams(SurfaceControl surface, int params, float alpha, Matrix matrix, Rect windowCrop, int layer, float cornerRadius, int backgroundBlurRadius, float backgroundBlurScale, boolean visible, Transaction mergeTransaction, boolean opaque, EarlyWakeupInfo earlyWakeupInfo) { Transaction mergeTransaction, boolean opaque) { this.flags = params; this.surface = surface; this.alpha = alpha; Loading @@ -351,7 +348,6 @@ public class SyncRtSurfaceTransactionApplier { this.visible = visible; this.mergeTransaction = mergeTransaction; this.opaque = opaque; this.earlyWakeupInfo = earlyWakeupInfo; } private final int flags; Loading Loading @@ -384,7 +380,5 @@ public class SyncRtSurfaceTransactionApplier { public final Transaction mergeTransaction; public final boolean opaque; public final EarlyWakeupInfo earlyWakeupInfo; } } core/java/android/window/SystemPerformanceHinter.java +2 −9 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.gui.EarlyWakeupInfo; import android.os.Binder; import android.os.PerformanceHintManager; import android.os.Trace; import android.util.Log; Loading Loading @@ -168,9 +166,6 @@ public class SystemPerformanceHinter { private @Nullable PerformanceHintManager.Session mAdpfSession; private @Nullable DisplayRootProvider mDisplayRootProvider; /** Token for early wakeup requests to SurfaceFlinger. */ private EarlyWakeupInfo mEarlyWakeupInfo = new EarlyWakeupInfo(); /** * Constructor for the hinter. * @hide Loading @@ -191,8 +186,6 @@ public class SystemPerformanceHinter { mTransaction = transactionSupplier != null ? transactionSupplier.get() : new SurfaceControl.Transaction(); mEarlyWakeupInfo.token = new Binder(); mEarlyWakeupInfo.trace = SystemPerformanceHinter.class.getName(); } /** Loading Loading @@ -272,7 +265,7 @@ public class SystemPerformanceHinter { // Global flags if (nowEnabled(oldGlobalFlags, newGlobalFlags, HINT_SF_EARLY_WAKEUP)) { mTransaction.setEarlyWakeupStart(mEarlyWakeupInfo); mTransaction.setEarlyWakeupStart(); transactionChanged = true; if (isTraceEnabled) { asyncTraceBegin(HINT_SF_EARLY_WAKEUP, Display.INVALID_DISPLAY); Loading Loading @@ -322,7 +315,7 @@ public class SystemPerformanceHinter { // Global flags if (nowDisabled(oldGlobalFlags, newGlobalFlags, HINT_SF_EARLY_WAKEUP)) { mTransaction.setEarlyWakeupEnd(mEarlyWakeupInfo); mTransaction.setEarlyWakeupEnd(); transactionChanged = true; if (isTraceEnabled) { asyncTraceEnd(HINT_SF_EARLY_WAKEUP); Loading core/jni/android_view_SurfaceControl.cpp +10 −38 Original line number Diff line number Diff line Loading @@ -579,42 +579,14 @@ static void nativeSetAnimationTransaction(JNIEnv* env, jclass clazz, jlong trans transaction->setAnimationTransaction(); } static void nativeSetEarlyWakeupStart(JNIEnv* env, jclass clazz, jlong transactionObj, jobject infoObj) { Parcel* infoParcel = parcelForJavaObject(env, infoObj); if (infoParcel == NULL) { doThrowNPE(env); return; } gui::EarlyWakeupInfo earlyWakeupInfo; status_t err = earlyWakeupInfo.readFromParcel(infoParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "EarlyWakeupInfo parcel has wrong format"); return; } static void nativeSetEarlyWakeupStart(JNIEnv* env, jclass clazz, jlong transactionObj) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->setEarlyWakeupStart(earlyWakeupInfo); } static void nativeSetEarlyWakeupEnd(JNIEnv* env, jclass clazz, jlong transactionObj, jobject infoObj) { Parcel* infoParcel = parcelForJavaObject(env, infoObj); if (infoParcel == NULL) { doThrowNPE(env); return; } gui::EarlyWakeupInfo earlyWakeupInfo; status_t err = earlyWakeupInfo.readFromParcel(infoParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "EarlyWakeupInfo parcel has wrong format"); return; transaction->setEarlyWakeupStart(); } static void nativeSetEarlyWakeupEnd(JNIEnv* env, jclass clazz, jlong transactionObj) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->setEarlyWakeupEnd(earlyWakeupInfo); transaction->setEarlyWakeupEnd(); } static jlong nativeGetTransactionId(JNIEnv* env, jclass clazz, jlong transactionObj) { Loading Loading @@ -1204,8 +1176,8 @@ static void nativeSetBoxShadowSettings(JNIEnv* env, jclass clazz, jlong transact transaction->setBoxShadowSettings(ctrl, settings); } static void nativeSetBorderSettings(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jobject settingsObj) { static void nativeSetBorderSettings(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jobject settingsObj) { Parcel* settingsParcel = parcelForJavaObject(env, settingsObj); if (settingsParcel == NULL) { doThrowNPE(env); Loading Loading @@ -2599,9 +2571,9 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeMergeTransaction }, {"nativeSetAnimationTransaction", "(J)V", (void*)nativeSetAnimationTransaction }, {"nativeSetEarlyWakeupStart", "(JLandroid/os/Parcel;)V", {"nativeSetEarlyWakeupStart", "(J)V", (void*)nativeSetEarlyWakeupStart }, {"nativeSetEarlyWakeupEnd", "(JLandroid/os/Parcel;)V", {"nativeSetEarlyWakeupEnd", "(J)V", (void*)nativeSetEarlyWakeupEnd }, {"nativeGetTransactionId", "(J)J", (void*)nativeGetTransactionId }, Loading core/tests/coretests/src/android/window/SystemPerformanceHinterTests.java +13 −15 Original line number Diff line number Diff line Loading @@ -37,8 +37,6 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import android.gui.EarlyWakeupInfo; import android.os.Binder; import android.os.PerformanceHintManager; import android.platform.test.annotations.Presubmit; import android.view.SurfaceControl; Loading Loading @@ -192,7 +190,7 @@ public class SystemPerformanceHinterTests { assertEquals(0, mRootProvider.getCount); // Verify we call SF verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); } Loading @@ -204,7 +202,7 @@ public class SystemPerformanceHinterTests { session.close(); // Verify we call SF verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); } Loading Loading @@ -251,7 +249,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); } Loading @@ -272,7 +270,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -293,7 +291,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -312,7 +310,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); reset(mTransaction); Loading @@ -323,7 +321,7 @@ public class SystemPerformanceHinterTests { // Verify we never call SF and perf manager since session1 is already running verify(mTransaction, never()).setFrameRateSelectionStrategy(any(), anyInt()); verify(mTransaction, never()).setFrameRateCategory(any(), anyInt(), anyBoolean()); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction, never()).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); Loading @@ -331,7 +329,7 @@ public class SystemPerformanceHinterTests { // Verify we have not cleaned up because session1 is still running verify(mTransaction, never()).setFrameRateSelectionStrategy(any(), anyInt()); verify(mTransaction, never()).setFrameRateCategory(any(), anyInt(), anyBoolean()); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction, never()).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); Loading @@ -344,7 +342,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -363,7 +361,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); reset(mTransaction); Loading @@ -379,7 +377,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction, never()).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); reset(mTransaction); Loading @@ -402,7 +400,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), anyInt(), eq(false)); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); reset(mTransaction); Loading @@ -420,7 +418,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading Loading
core/java/android/view/SurfaceControl.java +6 −18 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.graphics.Region; import android.gui.BorderSettings; import android.gui.BoxShadowSettings; import android.gui.DropInputMode; import android.gui.EarlyWakeupInfo; import android.gui.StalledTransactionInfo; import android.gui.TrustedOverlay; import android.hardware.DataSpace; Loading @@ -70,7 +69,6 @@ import android.os.IBinder; import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; import android.util.ArrayMap; import android.util.Log; import android.util.Slog; Loading Loading @@ -131,8 +129,8 @@ public final class SurfaceControl implements Parcelable { long otherTransactionObj); private static native void nativeClearTransaction(long transactionObj); private static native void nativeSetAnimationTransaction(long transactionObj); private static native void nativeSetEarlyWakeupStart(long transactionObj, Parcel request); private static native void nativeSetEarlyWakeupEnd(long transactionObj, Parcel request); private static native void nativeSetEarlyWakeupStart(long transactionObj); private static native void nativeSetEarlyWakeupEnd(long transactionObj); private static native long nativeGetTransactionId(long transactionObj); private static native void nativeSetLayer(long transactionObj, long nativeObject, int zorder); Loading Loading @@ -4126,14 +4124,8 @@ public final class SurfaceControl implements Parcelable { * @hide */ @RequiresPermission(Manifest.permission.WAKEUP_SURFACE_FLINGER) public Transaction setEarlyWakeupStart(@NonNull EarlyWakeupInfo info) { Parcel infoParcel = Parcel.obtain(); info.writeToParcel(infoParcel, 0); infoParcel.setDataPosition(0); nativeSetEarlyWakeupStart(mNativeObject, infoParcel); Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_APP, "EarlyWakeup", "setEarlyWakeupStart: called by " + info.trace + " with " + info.token, 0); public Transaction setEarlyWakeupStart() { nativeSetEarlyWakeupStart(mNativeObject); return this; } Loading @@ -4143,12 +4135,8 @@ public final class SurfaceControl implements Parcelable { * @hide */ @RequiresPermission(Manifest.permission.WAKEUP_SURFACE_FLINGER) public Transaction setEarlyWakeupEnd(@NonNull EarlyWakeupInfo info) { Parcel infoParcel = Parcel.obtain(); info.writeToParcel(infoParcel, 0); infoParcel.setDataPosition(0); nativeSetEarlyWakeupEnd(mNativeObject, infoParcel); Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_APP, "EarlyWakeup", 0); public Transaction setEarlyWakeupEnd() { nativeSetEarlyWakeupEnd(mNativeObject); return this; } Loading
core/java/android/view/SyncRtSurfaceTransactionApplier.java +7 −13 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.view; import android.annotation.SuppressLint; import android.graphics.Matrix; import android.graphics.Rect; import android.gui.EarlyWakeupInfo; import android.view.SurfaceControl.Transaction; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -140,10 +139,10 @@ public class SyncRtSurfaceTransactionApplier { } } if ((params.flags & FLAG_EARLY_WAKEUP_START) != 0) { t.setEarlyWakeupStart(params.earlyWakeupInfo); t.setEarlyWakeupStart(); } if ((params.flags & FLAG_EARLY_WAKEUP_END) != 0) { t.setEarlyWakeupEnd(params.earlyWakeupInfo); t.setEarlyWakeupEnd(); } if ((params.flags & FLAG_OPAQUE) != 0) { t.setOpaque(params.surface, params.opaque); Loading Loading @@ -194,7 +193,6 @@ public class SyncRtSurfaceTransactionApplier { boolean visible; boolean opaque; Transaction mergeTransaction; EarlyWakeupInfo earlyWakeupInfo; /** * @param surface The surface to modify. Loading Loading @@ -299,8 +297,7 @@ public class SyncRtSurfaceTransactionApplier { * wakes up earlier to compose surfaces. * @return this Builder */ public Builder withEarlyWakeupStart(EarlyWakeupInfo earlyWakeupInfo) { this.earlyWakeupInfo = earlyWakeupInfo; public Builder withEarlyWakeupStart() { flags |= FLAG_EARLY_WAKEUP_START; return this; } Loading @@ -309,8 +306,7 @@ public class SyncRtSurfaceTransactionApplier { * Removes the early wake up hint set by earlyWakeupStart. * @return this Builder */ public Builder withEarlyWakeupEnd(EarlyWakeupInfo earlyWakeupInfo) { this.earlyWakeupInfo = earlyWakeupInfo; public Builder withEarlyWakeupEnd() { flags |= FLAG_EARLY_WAKEUP_END; return this; } Loading @@ -331,14 +327,15 @@ public class SyncRtSurfaceTransactionApplier { public SurfaceParams build() { return new SurfaceParams(surface, flags, alpha, matrix, windowCrop, layer, cornerRadius, backgroundBlurRadius, backgroundBlurScale, visible, mergeTransaction, opaque, earlyWakeupInfo); mergeTransaction, opaque); } } private SurfaceParams(SurfaceControl surface, int params, float alpha, Matrix matrix, Rect windowCrop, int layer, float cornerRadius, int backgroundBlurRadius, float backgroundBlurScale, boolean visible, Transaction mergeTransaction, boolean opaque, EarlyWakeupInfo earlyWakeupInfo) { Transaction mergeTransaction, boolean opaque) { this.flags = params; this.surface = surface; this.alpha = alpha; Loading @@ -351,7 +348,6 @@ public class SyncRtSurfaceTransactionApplier { this.visible = visible; this.mergeTransaction = mergeTransaction; this.opaque = opaque; this.earlyWakeupInfo = earlyWakeupInfo; } private final int flags; Loading Loading @@ -384,7 +380,5 @@ public class SyncRtSurfaceTransactionApplier { public final Transaction mergeTransaction; public final boolean opaque; public final EarlyWakeupInfo earlyWakeupInfo; } }
core/java/android/window/SystemPerformanceHinter.java +2 −9 Original line number Diff line number Diff line Loading @@ -26,8 +26,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.gui.EarlyWakeupInfo; import android.os.Binder; import android.os.PerformanceHintManager; import android.os.Trace; import android.util.Log; Loading Loading @@ -168,9 +166,6 @@ public class SystemPerformanceHinter { private @Nullable PerformanceHintManager.Session mAdpfSession; private @Nullable DisplayRootProvider mDisplayRootProvider; /** Token for early wakeup requests to SurfaceFlinger. */ private EarlyWakeupInfo mEarlyWakeupInfo = new EarlyWakeupInfo(); /** * Constructor for the hinter. * @hide Loading @@ -191,8 +186,6 @@ public class SystemPerformanceHinter { mTransaction = transactionSupplier != null ? transactionSupplier.get() : new SurfaceControl.Transaction(); mEarlyWakeupInfo.token = new Binder(); mEarlyWakeupInfo.trace = SystemPerformanceHinter.class.getName(); } /** Loading Loading @@ -272,7 +265,7 @@ public class SystemPerformanceHinter { // Global flags if (nowEnabled(oldGlobalFlags, newGlobalFlags, HINT_SF_EARLY_WAKEUP)) { mTransaction.setEarlyWakeupStart(mEarlyWakeupInfo); mTransaction.setEarlyWakeupStart(); transactionChanged = true; if (isTraceEnabled) { asyncTraceBegin(HINT_SF_EARLY_WAKEUP, Display.INVALID_DISPLAY); Loading Loading @@ -322,7 +315,7 @@ public class SystemPerformanceHinter { // Global flags if (nowDisabled(oldGlobalFlags, newGlobalFlags, HINT_SF_EARLY_WAKEUP)) { mTransaction.setEarlyWakeupEnd(mEarlyWakeupInfo); mTransaction.setEarlyWakeupEnd(); transactionChanged = true; if (isTraceEnabled) { asyncTraceEnd(HINT_SF_EARLY_WAKEUP); Loading
core/jni/android_view_SurfaceControl.cpp +10 −38 Original line number Diff line number Diff line Loading @@ -579,42 +579,14 @@ static void nativeSetAnimationTransaction(JNIEnv* env, jclass clazz, jlong trans transaction->setAnimationTransaction(); } static void nativeSetEarlyWakeupStart(JNIEnv* env, jclass clazz, jlong transactionObj, jobject infoObj) { Parcel* infoParcel = parcelForJavaObject(env, infoObj); if (infoParcel == NULL) { doThrowNPE(env); return; } gui::EarlyWakeupInfo earlyWakeupInfo; status_t err = earlyWakeupInfo.readFromParcel(infoParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "EarlyWakeupInfo parcel has wrong format"); return; } static void nativeSetEarlyWakeupStart(JNIEnv* env, jclass clazz, jlong transactionObj) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->setEarlyWakeupStart(earlyWakeupInfo); } static void nativeSetEarlyWakeupEnd(JNIEnv* env, jclass clazz, jlong transactionObj, jobject infoObj) { Parcel* infoParcel = parcelForJavaObject(env, infoObj); if (infoParcel == NULL) { doThrowNPE(env); return; } gui::EarlyWakeupInfo earlyWakeupInfo; status_t err = earlyWakeupInfo.readFromParcel(infoParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "EarlyWakeupInfo parcel has wrong format"); return; transaction->setEarlyWakeupStart(); } static void nativeSetEarlyWakeupEnd(JNIEnv* env, jclass clazz, jlong transactionObj) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->setEarlyWakeupEnd(earlyWakeupInfo); transaction->setEarlyWakeupEnd(); } static jlong nativeGetTransactionId(JNIEnv* env, jclass clazz, jlong transactionObj) { Loading Loading @@ -1204,8 +1176,8 @@ static void nativeSetBoxShadowSettings(JNIEnv* env, jclass clazz, jlong transact transaction->setBoxShadowSettings(ctrl, settings); } static void nativeSetBorderSettings(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jobject settingsObj) { static void nativeSetBorderSettings(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jobject settingsObj) { Parcel* settingsParcel = parcelForJavaObject(env, settingsObj); if (settingsParcel == NULL) { doThrowNPE(env); Loading Loading @@ -2599,9 +2571,9 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeMergeTransaction }, {"nativeSetAnimationTransaction", "(J)V", (void*)nativeSetAnimationTransaction }, {"nativeSetEarlyWakeupStart", "(JLandroid/os/Parcel;)V", {"nativeSetEarlyWakeupStart", "(J)V", (void*)nativeSetEarlyWakeupStart }, {"nativeSetEarlyWakeupEnd", "(JLandroid/os/Parcel;)V", {"nativeSetEarlyWakeupEnd", "(J)V", (void*)nativeSetEarlyWakeupEnd }, {"nativeGetTransactionId", "(J)J", (void*)nativeGetTransactionId }, Loading
core/tests/coretests/src/android/window/SystemPerformanceHinterTests.java +13 −15 Original line number Diff line number Diff line Loading @@ -37,8 +37,6 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import android.gui.EarlyWakeupInfo; import android.os.Binder; import android.os.PerformanceHintManager; import android.platform.test.annotations.Presubmit; import android.view.SurfaceControl; Loading Loading @@ -192,7 +190,7 @@ public class SystemPerformanceHinterTests { assertEquals(0, mRootProvider.getCount); // Verify we call SF verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); } Loading @@ -204,7 +202,7 @@ public class SystemPerformanceHinterTests { session.close(); // Verify we call SF verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); } Loading Loading @@ -251,7 +249,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); } Loading @@ -272,7 +270,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -293,7 +291,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -312,7 +310,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); reset(mTransaction); Loading @@ -323,7 +321,7 @@ public class SystemPerformanceHinterTests { // Verify we never call SF and perf manager since session1 is already running verify(mTransaction, never()).setFrameRateSelectionStrategy(any(), anyInt()); verify(mTransaction, never()).setFrameRateCategory(any(), anyInt(), anyBoolean()); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction, never()).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); Loading @@ -331,7 +329,7 @@ public class SystemPerformanceHinterTests { // Verify we have not cleaned up because session1 is still running verify(mTransaction, never()).setFrameRateSelectionStrategy(any(), anyInt()); verify(mTransaction, never()).setFrameRateCategory(any(), anyInt(), anyBoolean()); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction, never()).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); Loading @@ -344,7 +342,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading @@ -363,7 +361,7 @@ public class SystemPerformanceHinterTests { eq(mDefaultDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_UP)); reset(mTransaction); Loading @@ -379,7 +377,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), eq(FRAME_RATE_CATEGORY_HIGH), eq(false)); verify(mTransaction, never()).setEarlyWakeupStart(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupStart(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); reset(mTransaction); Loading @@ -402,7 +400,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), anyInt(), eq(false)); verify(mTransaction, never()).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction, never()).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession, never()).sendHint(anyInt()); reset(mTransaction); Loading @@ -420,7 +418,7 @@ public class SystemPerformanceHinterTests { eq(mSecondaryDisplayRoot), eq(FRAME_RATE_CATEGORY_DEFAULT), eq(false)); verify(mTransaction).setEarlyWakeupEnd(any(EarlyWakeupInfo.class)); verify(mTransaction).setEarlyWakeupEnd(); verify(mTransaction).applyAsyncUnsafe(); verify(mAdpfSession).sendHint(eq(CPU_LOAD_RESET)); } Loading