@@ -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
1819object AdditionalSnapTargetsHookConfig {
1920 val enabled = SnapModeHookConfig .enabled && CustomFixedRatioHookConfig .enabled && Build .VERSION .SDK_INT >= Build .VERSION_CODES .UPSIDE_DOWN_CAKE
@@ -34,21 +35,14 @@ class AdditionalSnapTargetsHook : IXposedHookLoadPackage, IXposedHookInitPackage
3435
3536 val DividerSnapAlgorithmClass = XposedHelpers .findClass(" com.android.wm.shell.common.split.DividerSnapAlgorithm" , lpparam.classLoader)
3637 val SnapTargetClass = XposedHelpers .findClass(DividerSnapAlgorithmClass .name + " \$ SnapTarget" , lpparam.classLoader)
37- val SnapTargetClassConstructor = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .VANILLA_ICE_CREAM ) XposedHelpers .findConstructorExact(
38- SnapTargetClass ,
39- Int ::class .java,
40- Int ::class .java,
41- )
42- else XposedHelpers .findConstructorExact(
43- SnapTargetClass ,
44- Int ::class .java,
45- Int ::class .java,
46- Int ::class .java,
47- )
48-
38+ val UnsafeClass = XposedHelpers .findClass(" sun.misc.Unsafe" , lpparam.classLoader)
39+ val unsafe = XposedHelpers .callStaticMethod(UnsafeClass , " getUnsafe" ) as Unsafe
4940 fun createNewSnapTargetInstance (position : Int , snapPosition : Int ): Any {
50- return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .VANILLA_ICE_CREAM ) SnapTargetClassConstructor .newInstance(position, snapPosition)
51- else SnapTargetClassConstructor .newInstance(position, 0 , snapPosition)
41+ val snapTarget = unsafe.allocateInstance(SnapTargetClass )
42+ XposedHelpers .setIntField(snapTarget, " position" , position)
43+ XposedHelpers .setIntField(snapTarget, " snapPosition" , snapPosition)
44+ XposedHelpers .setFloatField(snapTarget, " distanceMultiplier" , 1f )
45+ return snapTarget
5246 }
5347
5448 XposedBridge .hookAllConstructors(DividerSnapAlgorithmClass , object : XC_MethodHook () {
0 commit comments