Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 725bc77a authored by Anton Ivanov's avatar Anton Ivanov Committed by Android (Google) Code Review
Browse files

Merge "JNI glue for addTransactionBarrier()." into main

parents 97b6ae0f 8bc319f6
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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
+24 −0
Original line number Diff line number Diff line
@@ -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>
@@ -61,6 +62,7 @@
#include <ui/StaticDisplayInfo.h>
#include <utils/LightRefBase.h>
#include <utils/Log.h>
#include <utils/String16.h>

#include <memory>

@@ -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);
@@ -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",