Added jni and SurfaceControl methods for native reparentChild
Added the Java methods to invoke the reparentChild method that
was added in the native code.
Test: Builds and runs
Change-Id: I25a783bbc820340a5346521a5783e50ada8c6828
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 1a2968f..91932dd 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -105,6 +105,8 @@
long surfaceObject, long frame);
private static native void nativeReparentChildren(long nativeObject,
IBinder handle);
+ private static native void nativeReparentChild(long nativeObject,
+ IBinder parentHandle, IBinder childHandle);
private static native void nativeSeverChildren(long nativeObject);
private static native void nativeSetOverrideScalingMode(long nativeObject,
int scalingMode);
@@ -453,6 +455,11 @@
nativeReparentChildren(mNativeObject, newParentHandle);
}
+ /** Re-parents a specific child layer to a new parent */
+ public void reparentChild(IBinder newParentHandle, IBinder childHandle) {
+ nativeReparentChild(mNativeObject, newParentHandle, childHandle);
+ }
+
public void detachChildren() {
nativeSeverChildren(mNativeObject);
}
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index db9b52e..33f1c7d 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -736,6 +736,15 @@
ctrl->reparentChildren(handle);
}
+static void nativeReparentChild(JNIEnv* env, jclass clazz, jlong nativeObject,
+ jobject newParentObject, jobject childObject) {
+ auto ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
+ sp<IBinder> parentHandle = ibinderForJavaObject(env, newParentObject);
+ sp<IBinder> childHandle = ibinderForJavaObject(env, childObject);
+
+ ctrl->reparentChild(parentHandle, childHandle);
+}
+
static void nativeSeverChildren(JNIEnv* env, jclass clazz, jlong nativeObject) {
auto ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
ctrl->detachChildren();
@@ -859,6 +868,8 @@
(void*)nativeDeferTransactionUntilSurface },
{"nativeReparentChildren", "(JLandroid/os/IBinder;)V",
(void*)nativeReparentChildren } ,
+ {"nativeReparentChild", "(JLandroid/os/IBinder;Landroid/os/IBinder;)V",
+ (void*)nativeReparentChild },
{"nativeSeverChildren", "(J)V",
(void*)nativeSeverChildren } ,
{"nativeSetOverrideScalingMode", "(JI)V",