Loading core/java/android/view/SurfaceControl.java +30 −5 Original line number Diff line number Diff line Loading @@ -750,18 +750,22 @@ public final class SurfaceControl implements Parcelable { private abstract static class CaptureArgs { private final int mPixelFormat; private final Rect mSourceCrop = new Rect(); private final float mFrameScale; private final float mFrameScaleX; private final float mFrameScaleY; private final boolean mCaptureSecureLayers; private final boolean mAllowProtected; private final long mUid; private final boolean mGrayscale; private CaptureArgs(Builder<? extends Builder<?>> builder) { mPixelFormat = builder.mPixelFormat; mSourceCrop.set(builder.mSourceCrop); mFrameScale = builder.mFrameScale; mFrameScaleX = builder.mFrameScaleX; mFrameScaleY = builder.mFrameScaleY; mCaptureSecureLayers = builder.mCaptureSecureLayers; mAllowProtected = builder.mAllowProtected; mUid = builder.mUid; mGrayscale = builder.mGrayscale; } /** Loading @@ -772,10 +776,12 @@ public final class SurfaceControl implements Parcelable { abstract static class Builder<T extends Builder<T>> { private int mPixelFormat = PixelFormat.RGBA_8888; private final Rect mSourceCrop = new Rect(); private float mFrameScale = 1; private float mFrameScaleX = 1; private float mFrameScaleY = 1; private boolean mCaptureSecureLayers; private boolean mAllowProtected; private long mUid = -1; private boolean mGrayscale; /** * The desired pixel format of the returned buffer. Loading @@ -798,7 +804,18 @@ public final class SurfaceControl implements Parcelable { * The desired scale of the returned buffer. The raw screen will be scaled up/down. */ public T setFrameScale(float frameScale) { mFrameScale = frameScale; mFrameScaleX = frameScale; mFrameScaleY = frameScale; return getThis(); } /** * The desired scale of the returned buffer, allowing separate values for x and y scale. * The raw screen will be scaled up/down. */ public T setFrameScale(float frameScaleX, float frameScaleY) { mFrameScaleX = frameScaleX; mFrameScaleY = frameScaleY; return getThis(); } Loading Loading @@ -833,6 +850,14 @@ public final class SurfaceControl implements Parcelable { return getThis(); } /** * Set whether the screenshot should use grayscale or not. */ public T setGrayscale(boolean grayscale) { mGrayscale = grayscale; return getThis(); } /** * Each sub class should return itself to allow the builder to chain properly */ Loading Loading @@ -929,7 +954,7 @@ public final class SurfaceControl implements Parcelable { /** * The arguments class used to make layer capture requests. * * @see #nativeCaptureLayers(LayerCaptureArgs) * @see #nativeCaptureLayers(LayerCaptureArgs, ScreenCaptureListener) * @hide */ public static class LayerCaptureArgs extends CaptureArgs { Loading core/jni/android_view_SurfaceControl.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -110,10 +110,12 @@ static struct { static struct { jfieldID pixelFormat; jfieldID sourceCrop; jfieldID frameScale; jfieldID frameScaleX; jfieldID frameScaleY; jfieldID captureSecureLayers; jfieldID allowProtected; jfieldID uid; jfieldID grayscale; } gCaptureArgsClassInfo; static struct { Loading Loading @@ -380,13 +382,17 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs& captureArgs.sourceCrop = rectFromObj(env, env->GetObjectField(captureArgsObject, gCaptureArgsClassInfo.sourceCrop)); captureArgs.frameScale = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScale); captureArgs.frameScaleX = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleX); captureArgs.frameScaleY = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleY); captureArgs.captureSecureLayers = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers); captureArgs.allowProtected = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected); captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid); captureArgs.grayscale = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.grayscale); } static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env, Loading Loading @@ -2032,12 +2038,14 @@ int register_android_view_SurfaceControl(JNIEnv* env) gCaptureArgsClassInfo.pixelFormat = GetFieldIDOrDie(env, captureArgsClazz, "mPixelFormat", "I"); gCaptureArgsClassInfo.sourceCrop = GetFieldIDOrDie(env, captureArgsClazz, "mSourceCrop", "Landroid/graphics/Rect;"); gCaptureArgsClassInfo.frameScale = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScale", "F"); gCaptureArgsClassInfo.frameScaleX = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleX", "F"); gCaptureArgsClassInfo.frameScaleY = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleY", "F"); gCaptureArgsClassInfo.captureSecureLayers = GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z"); gCaptureArgsClassInfo.allowProtected = GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z"); gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J"); gCaptureArgsClassInfo.grayscale = GetFieldIDOrDie(env, captureArgsClazz, "mGrayscale", "Z"); jclass displayCaptureArgsClazz = FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs"); Loading Loading
core/java/android/view/SurfaceControl.java +30 −5 Original line number Diff line number Diff line Loading @@ -750,18 +750,22 @@ public final class SurfaceControl implements Parcelable { private abstract static class CaptureArgs { private final int mPixelFormat; private final Rect mSourceCrop = new Rect(); private final float mFrameScale; private final float mFrameScaleX; private final float mFrameScaleY; private final boolean mCaptureSecureLayers; private final boolean mAllowProtected; private final long mUid; private final boolean mGrayscale; private CaptureArgs(Builder<? extends Builder<?>> builder) { mPixelFormat = builder.mPixelFormat; mSourceCrop.set(builder.mSourceCrop); mFrameScale = builder.mFrameScale; mFrameScaleX = builder.mFrameScaleX; mFrameScaleY = builder.mFrameScaleY; mCaptureSecureLayers = builder.mCaptureSecureLayers; mAllowProtected = builder.mAllowProtected; mUid = builder.mUid; mGrayscale = builder.mGrayscale; } /** Loading @@ -772,10 +776,12 @@ public final class SurfaceControl implements Parcelable { abstract static class Builder<T extends Builder<T>> { private int mPixelFormat = PixelFormat.RGBA_8888; private final Rect mSourceCrop = new Rect(); private float mFrameScale = 1; private float mFrameScaleX = 1; private float mFrameScaleY = 1; private boolean mCaptureSecureLayers; private boolean mAllowProtected; private long mUid = -1; private boolean mGrayscale; /** * The desired pixel format of the returned buffer. Loading @@ -798,7 +804,18 @@ public final class SurfaceControl implements Parcelable { * The desired scale of the returned buffer. The raw screen will be scaled up/down. */ public T setFrameScale(float frameScale) { mFrameScale = frameScale; mFrameScaleX = frameScale; mFrameScaleY = frameScale; return getThis(); } /** * The desired scale of the returned buffer, allowing separate values for x and y scale. * The raw screen will be scaled up/down. */ public T setFrameScale(float frameScaleX, float frameScaleY) { mFrameScaleX = frameScaleX; mFrameScaleY = frameScaleY; return getThis(); } Loading Loading @@ -833,6 +850,14 @@ public final class SurfaceControl implements Parcelable { return getThis(); } /** * Set whether the screenshot should use grayscale or not. */ public T setGrayscale(boolean grayscale) { mGrayscale = grayscale; return getThis(); } /** * Each sub class should return itself to allow the builder to chain properly */ Loading Loading @@ -929,7 +954,7 @@ public final class SurfaceControl implements Parcelable { /** * The arguments class used to make layer capture requests. * * @see #nativeCaptureLayers(LayerCaptureArgs) * @see #nativeCaptureLayers(LayerCaptureArgs, ScreenCaptureListener) * @hide */ public static class LayerCaptureArgs extends CaptureArgs { Loading
core/jni/android_view_SurfaceControl.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -110,10 +110,12 @@ static struct { static struct { jfieldID pixelFormat; jfieldID sourceCrop; jfieldID frameScale; jfieldID frameScaleX; jfieldID frameScaleY; jfieldID captureSecureLayers; jfieldID allowProtected; jfieldID uid; jfieldID grayscale; } gCaptureArgsClassInfo; static struct { Loading Loading @@ -380,13 +382,17 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs& captureArgs.sourceCrop = rectFromObj(env, env->GetObjectField(captureArgsObject, gCaptureArgsClassInfo.sourceCrop)); captureArgs.frameScale = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScale); captureArgs.frameScaleX = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleX); captureArgs.frameScaleY = env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleY); captureArgs.captureSecureLayers = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers); captureArgs.allowProtected = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected); captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid); captureArgs.grayscale = env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.grayscale); } static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env, Loading Loading @@ -2032,12 +2038,14 @@ int register_android_view_SurfaceControl(JNIEnv* env) gCaptureArgsClassInfo.pixelFormat = GetFieldIDOrDie(env, captureArgsClazz, "mPixelFormat", "I"); gCaptureArgsClassInfo.sourceCrop = GetFieldIDOrDie(env, captureArgsClazz, "mSourceCrop", "Landroid/graphics/Rect;"); gCaptureArgsClassInfo.frameScale = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScale", "F"); gCaptureArgsClassInfo.frameScaleX = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleX", "F"); gCaptureArgsClassInfo.frameScaleY = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleY", "F"); gCaptureArgsClassInfo.captureSecureLayers = GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z"); gCaptureArgsClassInfo.allowProtected = GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z"); gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J"); gCaptureArgsClassInfo.grayscale = GetFieldIDOrDie(env, captureArgsClazz, "mGrayscale", "Z"); jclass displayCaptureArgsClazz = FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs"); Loading