Loading core/java/android/view/SurfaceControl.java +18 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import android.gui.BoxShadowSettings; import android.gui.DropInputMode; import android.gui.EarlyWakeupInfo; import android.gui.StalledTransactionInfo; import android.gui.TransactionBarrier; import android.gui.TrustedOverlay; import android.hardware.DataSpace; import android.hardware.DisplayLuts; Loading Loading @@ -267,6 +268,7 @@ public final class SurfaceControl implements Parcelable { Parcel data); private static native void nativeAddWindowInfosReportedListener(long transactionObj, Runnable listener); private static native void nativeAddTransactionBarrier(long transactionObj, Parcel barrier); private static native boolean nativeGetDisplayBrightnessSupport(IBinder displayToken); private static native boolean nativeSetDisplayBrightness(IBinder displayToken, float sdrBrightness, float sdrBrightnessNits, float displayBrightness, Loading Loading @@ -3596,6 +3598,22 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Adds a transaction barrier. * * @param barrier Transaction Barrier. * * @hide */ @NonNull public Transaction addTransactionBarrier(@NonNull TransactionBarrier barrier) { Parcel barrierParcel = Parcel.obtain(); barrier.writeToParcel(barrierParcel, 0); barrierParcel.setDataPosition(0); nativeAddTransactionBarrier(mNativeObject, barrierParcel); return this; } /** * Specify how the buffer associated with this Surface is mapped in to the * parent coordinate space. The source frame will be scaled to fit the destination Loading core/jni/android_view_SurfaceControl.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <android/gui/BnWindowInfosReportedListener.h> #include <android/gui/EdgeExtensionParameters.h> #include <android/gui/JankData.h> #include <android/gui/TransactionBarrier.h> #include <android/hardware/display/IDeviceProductInfoConstants.h> #include <android/os/IInputConstants.h> #include <android_runtime/AndroidRuntime.h> Loading Loading @@ -61,6 +62,7 @@ #include <ui/StaticDisplayInfo.h> #include <utils/LightRefBase.h> #include <utils/Log.h> #include <utils/String16.h> #include <memory> Loading Loading @@ -1046,6 +1048,26 @@ static void nativeSetInputWindowInfo(JNIEnv* env, jclass clazz, jlong transactio transaction->setInputWindowInfo(ctrl, std::move(info)); } static void nativeAddTransactionBarrier(JNIEnv* env, jclass clazz, jlong transactionObj, jobject barrierObj) { Parcel* barrierParcel = parcelForJavaObject(env, barrierObj); if (barrierParcel == NULL) { doThrowNPE(env); return; } gui::TransactionBarrier barrier; status_t err = barrier.readFromParcel(barrierParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "TransactionBarrier parcel has wrong format"); return; } auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->addTransactionBarrier(std::move(barrier)); } static void nativeAddWindowInfosReportedListener(JNIEnv* env, jclass clazz, jlong transactionObj, jobject runnable) { auto listener = sp<WindowInfosReportedListenerWrapper>::make(env, runnable); Loading Loading @@ -2776,6 +2798,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetDesiredHdrHeadroom }, {"nativeSetCachingHint", "(JJI)V", (void*)nativeSetCachingHint }, {"nativeAddTransactionBarrier", "(JLandroid/os/Parcel;)V", (void*)nativeAddTransactionBarrier }, {"nativeAddWindowInfosReportedListener", "(JLjava/lang/Runnable;)V", (void*)nativeAddWindowInfosReportedListener }, {"nativeGetDisplayBrightnessSupport", "(Landroid/os/IBinder;)Z", Loading Loading
core/java/android/view/SurfaceControl.java +18 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import android.gui.BoxShadowSettings; import android.gui.DropInputMode; import android.gui.EarlyWakeupInfo; import android.gui.StalledTransactionInfo; import android.gui.TransactionBarrier; import android.gui.TrustedOverlay; import android.hardware.DataSpace; import android.hardware.DisplayLuts; Loading Loading @@ -267,6 +268,7 @@ public final class SurfaceControl implements Parcelable { Parcel data); private static native void nativeAddWindowInfosReportedListener(long transactionObj, Runnable listener); private static native void nativeAddTransactionBarrier(long transactionObj, Parcel barrier); private static native boolean nativeGetDisplayBrightnessSupport(IBinder displayToken); private static native boolean nativeSetDisplayBrightness(IBinder displayToken, float sdrBrightness, float sdrBrightnessNits, float displayBrightness, Loading Loading @@ -3596,6 +3598,22 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Adds a transaction barrier. * * @param barrier Transaction Barrier. * * @hide */ @NonNull public Transaction addTransactionBarrier(@NonNull TransactionBarrier barrier) { Parcel barrierParcel = Parcel.obtain(); barrier.writeToParcel(barrierParcel, 0); barrierParcel.setDataPosition(0); nativeAddTransactionBarrier(mNativeObject, barrierParcel); return this; } /** * Specify how the buffer associated with this Surface is mapped in to the * parent coordinate space. The source frame will be scaled to fit the destination Loading
core/jni/android_view_SurfaceControl.cpp +24 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <android/gui/BnWindowInfosReportedListener.h> #include <android/gui/EdgeExtensionParameters.h> #include <android/gui/JankData.h> #include <android/gui/TransactionBarrier.h> #include <android/hardware/display/IDeviceProductInfoConstants.h> #include <android/os/IInputConstants.h> #include <android_runtime/AndroidRuntime.h> Loading Loading @@ -61,6 +62,7 @@ #include <ui/StaticDisplayInfo.h> #include <utils/LightRefBase.h> #include <utils/Log.h> #include <utils/String16.h> #include <memory> Loading Loading @@ -1046,6 +1048,26 @@ static void nativeSetInputWindowInfo(JNIEnv* env, jclass clazz, jlong transactio transaction->setInputWindowInfo(ctrl, std::move(info)); } static void nativeAddTransactionBarrier(JNIEnv* env, jclass clazz, jlong transactionObj, jobject barrierObj) { Parcel* barrierParcel = parcelForJavaObject(env, barrierObj); if (barrierParcel == NULL) { doThrowNPE(env); return; } gui::TransactionBarrier barrier; status_t err = barrier.readFromParcel(barrierParcel); if (err != NO_ERROR) { jniThrowException(env, "java/lang/IllegalArgumentException", "TransactionBarrier parcel has wrong format"); return; } auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); transaction->addTransactionBarrier(std::move(barrier)); } static void nativeAddWindowInfosReportedListener(JNIEnv* env, jclass clazz, jlong transactionObj, jobject runnable) { auto listener = sp<WindowInfosReportedListenerWrapper>::make(env, runnable); Loading Loading @@ -2776,6 +2798,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetDesiredHdrHeadroom }, {"nativeSetCachingHint", "(JJI)V", (void*)nativeSetCachingHint }, {"nativeAddTransactionBarrier", "(JLandroid/os/Parcel;)V", (void*)nativeAddTransactionBarrier }, {"nativeAddWindowInfosReportedListener", "(JLjava/lang/Runnable;)V", (void*)nativeAddWindowInfosReportedListener }, {"nativeGetDisplayBrightnessSupport", "(Landroid/os/IBinder;)Z", Loading