Loading core/java/android/view/SurfaceControl.java +36 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Process; import android.os.UserHandle; import android.util.Log; Loading @@ -39,12 +41,14 @@ import java.io.Closeable; * SurfaceControl * @hide */ public class SurfaceControl { public class SurfaceControl implements Parcelable { private static final String TAG = "SurfaceControl"; private static native long nativeCreate(SurfaceSession session, String name, int w, int h, int format, int flags, long parentObject, int windowType, int ownerUid) throws OutOfResourcesException; private static native long nativeReadFromParcel(Parcel in); private static native void nativeWriteToParcel(long nativeObject, Parcel out); private static native void nativeRelease(long nativeObject); private static native void nativeDestroy(long nativeObject); private static native void nativeDisconnect(long nativeObject); Loading Loading @@ -577,6 +581,37 @@ public class SurfaceControl { mCloseGuard.open("release"); } private SurfaceControl(Parcel in) { mName = in.readString(); mNativeObject = nativeReadFromParcel(in); if (mNativeObject == 0) { throw new IllegalArgumentException("Couldn't read SurfaceControl from parcel=" + in); } mCloseGuard.open("release"); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mName); nativeWriteToParcel(mNativeObject, dest); } public static final Creator<SurfaceControl> CREATOR = new Creator<SurfaceControl>() { public SurfaceControl createFromParcel(Parcel in) { return new SurfaceControl(in); } public SurfaceControl[] newArray(int size) { return new SurfaceControl[size]; } }; @Override protected void finalize() throws Throwable { try { Loading core/jni/android_view_SurfaceControl.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -868,11 +868,40 @@ static jobject nativeGetHdrCapabilities(JNIEnv* env, jclass clazz, jobject token capabilities.getDesiredMaxAverageLuminance(), capabilities.getDesiredMinLuminance()); } static jlong nativeReadFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); return 0; } sp<SurfaceControl> surface = SurfaceControl::readFromParcel(parcel); if (surface == nullptr) { return 0; } surface->incStrong((void *)nativeCreate); return reinterpret_cast<jlong>(surface.get()); } static void nativeWriteToParcel(JNIEnv* env, jclass clazz, jlong nativeObject, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); return; } SurfaceControl* const self = reinterpret_cast<SurfaceControl *>(nativeObject); self->writeToParcel(parcel); } // ---------------------------------------------------------------------------- static const JNINativeMethod sSurfaceControlMethods[] = { {"nativeCreate", "(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIJII)J", (void*)nativeCreate }, {"nativeReadFromParcel", "(Landroid/os/Parcel;)J", (void*)nativeReadFromParcel }, {"nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)nativeWriteToParcel }, {"nativeRelease", "(J)V", (void*)nativeRelease }, {"nativeDestroy", "(J)V", Loading Loading
core/java/android/view/SurfaceControl.java +36 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Process; import android.os.UserHandle; import android.util.Log; Loading @@ -39,12 +41,14 @@ import java.io.Closeable; * SurfaceControl * @hide */ public class SurfaceControl { public class SurfaceControl implements Parcelable { private static final String TAG = "SurfaceControl"; private static native long nativeCreate(SurfaceSession session, String name, int w, int h, int format, int flags, long parentObject, int windowType, int ownerUid) throws OutOfResourcesException; private static native long nativeReadFromParcel(Parcel in); private static native void nativeWriteToParcel(long nativeObject, Parcel out); private static native void nativeRelease(long nativeObject); private static native void nativeDestroy(long nativeObject); private static native void nativeDisconnect(long nativeObject); Loading Loading @@ -577,6 +581,37 @@ public class SurfaceControl { mCloseGuard.open("release"); } private SurfaceControl(Parcel in) { mName = in.readString(); mNativeObject = nativeReadFromParcel(in); if (mNativeObject == 0) { throw new IllegalArgumentException("Couldn't read SurfaceControl from parcel=" + in); } mCloseGuard.open("release"); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mName); nativeWriteToParcel(mNativeObject, dest); } public static final Creator<SurfaceControl> CREATOR = new Creator<SurfaceControl>() { public SurfaceControl createFromParcel(Parcel in) { return new SurfaceControl(in); } public SurfaceControl[] newArray(int size) { return new SurfaceControl[size]; } }; @Override protected void finalize() throws Throwable { try { Loading
core/jni/android_view_SurfaceControl.cpp +29 −0 Original line number Diff line number Diff line Loading @@ -868,11 +868,40 @@ static jobject nativeGetHdrCapabilities(JNIEnv* env, jclass clazz, jobject token capabilities.getDesiredMaxAverageLuminance(), capabilities.getDesiredMinLuminance()); } static jlong nativeReadFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); return 0; } sp<SurfaceControl> surface = SurfaceControl::readFromParcel(parcel); if (surface == nullptr) { return 0; } surface->incStrong((void *)nativeCreate); return reinterpret_cast<jlong>(surface.get()); } static void nativeWriteToParcel(JNIEnv* env, jclass clazz, jlong nativeObject, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); return; } SurfaceControl* const self = reinterpret_cast<SurfaceControl *>(nativeObject); self->writeToParcel(parcel); } // ---------------------------------------------------------------------------- static const JNINativeMethod sSurfaceControlMethods[] = { {"nativeCreate", "(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIJII)J", (void*)nativeCreate }, {"nativeReadFromParcel", "(Landroid/os/Parcel;)J", (void*)nativeReadFromParcel }, {"nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)nativeWriteToParcel }, {"nativeRelease", "(J)V", (void*)nativeRelease }, {"nativeDestroy", "(J)V", Loading