@@ -14,6 +14,7 @@ import de.robv.android.xposed.XposedBridge
1414import de.robv.android.xposed.XposedHelpers
1515import de.robv.android.xposed.callbacks.XC_InitPackageResources
1616import de.robv.android.xposed.callbacks.XC_LoadPackage
17+ import sun.misc.Unsafe
1718
1819// https://github.com/LineageOS/android_frameworks_base/blob/f0964915f5992fd38cf1e5e3f87c0d3ac719aa09/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/split/SplitScreenConstants.java
1920const val SNAP_TO_2_33_66 = 0
@@ -42,21 +43,14 @@ class AdditionalSnapTargetsHook : IXposedHookLoadPackage, IXposedHookInitPackage
4243
4344 val DividerSnapAlgorithmClass = XposedHelpers .findClass(" com.android.wm.shell.common.split.DividerSnapAlgorithm" , lpparam.classLoader)
4445 val SnapTargetClass = XposedHelpers .findClass(DividerSnapAlgorithmClass .name + " \$ SnapTarget" , lpparam.classLoader)
45- val SnapTargetClassConstructor = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .VANILLA_ICE_CREAM ) XposedHelpers .findConstructorExact(
46- SnapTargetClass ,
47- Int ::class .java,
48- Int ::class .java,
49- )
50- else XposedHelpers .findConstructorExact(
51- SnapTargetClass ,
52- Int ::class .java,
53- Int ::class .java,
54- Int ::class .java,
55- )
56-
46+ val UnsafeClass = XposedHelpers .findClass(" sun.misc.Unsafe" ,lpparam.classLoader)
47+ val unsafe = XposedHelpers .callStaticMethod(UnsafeClass , " getUnsafe" ) as Unsafe
5748 fun createNewSnapTargetInstance (position : Int , snapPosition : Int ): Any {
58- return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .VANILLA_ICE_CREAM ) SnapTargetClassConstructor .newInstance(position, snapPosition)
59- else SnapTargetClassConstructor .newInstance(position, 0 , snapPosition)
49+ val snapTarget = unsafe.allocateInstance(SnapTargetClass )
50+ XposedHelpers .setIntField(snapTarget, " position" , position)
51+ XposedHelpers .setIntField(snapTarget, " snapPosition" , snapPosition)
52+ XposedHelpers .setFloatField(snapTarget, " distanceMultiplier" , 1f )
53+ return snapTarget
6054 }
6155
6256 XposedBridge .hookAllConstructors(DividerSnapAlgorithmClass , object : XC_MethodHook () {
0 commit comments