mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-10-06 21:41:02 +02:00
misc: Use nint instead of IntPtr
This commit is contained in:
@@ -403,7 +403,7 @@ namespace ARMeilleure.Translation
|
|||||||
#if ANDROID
|
#if ANDROID
|
||||||
if (_androidDelegates.TryGetValue(key, out Delegate del))
|
if (_androidDelegates.TryGetValue(key, out Delegate del))
|
||||||
{
|
{
|
||||||
IntPtr funcPtr = Marshal.GetFunctionPointerForDelegate(del);
|
nint funcPtr = Marshal.GetFunctionPointerForDelegate(del);
|
||||||
_delegates.Add(key, new DelegateInfo(funcPtr));
|
_delegates.Add(key, new DelegateInfo(funcPtr));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ namespace ARMeilleure.Translation
|
|||||||
#if ANDROID
|
#if ANDROID
|
||||||
// For Android, use the Delegates class to get the function pointer
|
// For Android, use the Delegates class to get the function pointer
|
||||||
int index = Delegates.GetDelegateIndex(info);
|
int index = Delegates.GetDelegateIndex(info);
|
||||||
IntPtr funcPtr = Delegates.GetDelegateFuncPtrByIndex(index);
|
nint funcPtr = Delegates.GetDelegateFuncPtrByIndex(index);
|
||||||
#else
|
#else
|
||||||
// For other platforms, use direct method handle approach
|
// For other platforms, use direct method handle approach
|
||||||
nint funcPtr = info.MethodHandle.GetFunctionPointer();
|
nint funcPtr = info.MethodHandle.GetFunctionPointer();
|
||||||
|
|||||||
@@ -190,11 +190,11 @@ namespace LibKenjinx.Android
|
|||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (Pointer != IntPtr.Zero)
|
if (Pointer != nint.Zero)
|
||||||
{
|
{
|
||||||
Marshal.FreeHGlobal(Pointer);
|
Marshal.FreeHGlobal(Pointer);
|
||||||
}
|
}
|
||||||
Pointer = IntPtr.Zero;
|
Pointer = nint.Zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -205,12 +205,12 @@ internal delegate void ExceptionDescribeDelegate(JEnvRef env);
|
|||||||
internal delegate void ExceptionClearDelegate(JEnvRef env);
|
internal delegate void ExceptionClearDelegate(JEnvRef env);
|
||||||
internal delegate void FatalErrorDelegate(JEnvRef env, ReadOnlyValPtr<Byte> messageChars0);
|
internal delegate void FatalErrorDelegate(JEnvRef env, ReadOnlyValPtr<Byte> messageChars0);
|
||||||
internal delegate JBoolean ExceptionCheckDelegate(JEnvRef env);
|
internal delegate JBoolean ExceptionCheckDelegate(JEnvRef env);
|
||||||
internal delegate JObjectLocalRef NewDirectByteBufferDelegate(JEnvRef env, IntPtr address, Int64 capacity);
|
internal delegate JObjectLocalRef NewDirectByteBufferDelegate(JEnvRef env, nint address, Int64 capacity);
|
||||||
internal delegate IntPtr GetDirectBufferAddressDelegate(JEnvRef env, JObjectLocalRef buffObj);
|
internal delegate nint GetDirectBufferAddressDelegate(JEnvRef env, JObjectLocalRef buffObj);
|
||||||
internal delegate Int64 GetDirectBufferCapacityDelegate(JEnvRef env, JObjectLocalRef buffObj);
|
internal delegate Int64 GetDirectBufferCapacityDelegate(JEnvRef env, JObjectLocalRef buffObj);
|
||||||
|
|
||||||
internal delegate JClassLocalRef DefineClassDelegate(JEnvRef env, ReadOnlyValPtr<Byte> nameChars0,
|
internal delegate JClassLocalRef DefineClassDelegate(JEnvRef env, ReadOnlyValPtr<Byte> nameChars0,
|
||||||
JObjectLocalRef loader, IntPtr binaryData, Int32 len);
|
JObjectLocalRef loader, nint binaryData, Int32 len);
|
||||||
|
|
||||||
internal delegate JClassLocalRef FindClassDelegate(JEnvRef env, ReadOnlyValPtr<Byte> nameChars0);
|
internal delegate JClassLocalRef FindClassDelegate(JEnvRef env, ReadOnlyValPtr<Byte> nameChars0);
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.Identifiers
|
|||||||
public readonly struct JFieldId : IEquatable<JFieldId>
|
public readonly struct JFieldId : IEquatable<JFieldId>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.Identifiers
|
|||||||
public readonly struct JMethodId : IEquatable<JMethodId>
|
public readonly struct JMethodId : IEquatable<JMethodId>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref JavaVMValue value = ref javaVm.VirtualMachine;
|
ref JavaVMValue value = ref javaVm.VirtualMachine;
|
||||||
ref JInvokeInterface jInvoke = ref value.Functions;
|
ref JInvokeInterface jInvoke = ref value.Functions;
|
||||||
|
|
||||||
IntPtr getEnvPtr = jInvoke.GetEnvPointer;
|
nint getEnvPtr = jInvoke.GetEnvPointer;
|
||||||
GetEnvDelegate getEnv = getEnvPtr.GetUnsafeDelegate<GetEnvDelegate>()!;
|
GetEnvDelegate getEnv = getEnvPtr.GetUnsafeDelegate<GetEnvDelegate>()!;
|
||||||
|
|
||||||
if (getEnv(javaVm, out JEnvRef jEnv, JniVersion) == JResult.Ok)
|
if (getEnv(javaVm, out JEnvRef jEnv, JniVersion) == JResult.Ok)
|
||||||
@@ -27,7 +27,7 @@ namespace LibKenjinx.Jni
|
|||||||
}
|
}
|
||||||
|
|
||||||
JavaVMAttachArgs args = new() { Version = JniVersion, Name = threadName.ValuePointer, };
|
JavaVMAttachArgs args = new() { Version = JniVersion, Name = threadName.ValuePointer, };
|
||||||
IntPtr attachCurrentThreadPtr = jInvoke.AttachCurrentThreadPointer;
|
nint attachCurrentThreadPtr = jInvoke.AttachCurrentThreadPointer;
|
||||||
AttachCurrentThreadDelegate attachCurrentThread =
|
AttachCurrentThreadDelegate attachCurrentThread =
|
||||||
attachCurrentThreadPtr.GetUnsafeDelegate<AttachCurrentThreadDelegate>()!;
|
attachCurrentThreadPtr.GetUnsafeDelegate<AttachCurrentThreadDelegate>()!;
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref JInvokeInterface jInvoke = ref value.Functions;
|
ref JInvokeInterface jInvoke = ref value.Functions;
|
||||||
|
|
||||||
JavaVMAttachArgs args = new() { Version = JniVersion, Name = daemonName.ValuePointer, };
|
JavaVMAttachArgs args = new() { Version = JniVersion, Name = daemonName.ValuePointer, };
|
||||||
IntPtr attachCurrentThreadAsDaemonPtr = jInvoke.AttachCurrentThreadAsDaemonPointer;
|
nint attachCurrentThreadAsDaemonPtr = jInvoke.AttachCurrentThreadAsDaemonPointer;
|
||||||
AttachCurrentThreadAsDaemonDelegate attachCurrentThreadAsDaemon =
|
AttachCurrentThreadAsDaemonDelegate attachCurrentThreadAsDaemon =
|
||||||
attachCurrentThreadAsDaemonPtr.GetUnsafeDelegate<AttachCurrentThreadAsDaemonDelegate>()!;
|
attachCurrentThreadAsDaemonPtr.GetUnsafeDelegate<AttachCurrentThreadAsDaemonDelegate>()!;
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref JavaVMValue value = ref javaVm.VirtualMachine;
|
ref JavaVMValue value = ref javaVm.VirtualMachine;
|
||||||
ref JInvokeInterface jInvoke = ref value.Functions;
|
ref JInvokeInterface jInvoke = ref value.Functions;
|
||||||
|
|
||||||
IntPtr detachCurrentThreadPtr = jInvoke.DetachCurrentThreadPointer;
|
nint detachCurrentThreadPtr = jInvoke.DetachCurrentThreadPointer;
|
||||||
DetachCurrentThreadDelegate detachCurrentThread =
|
DetachCurrentThreadDelegate detachCurrentThread =
|
||||||
detachCurrentThreadPtr.GetUnsafeDelegate<DetachCurrentThreadDelegate>()!;
|
detachCurrentThreadPtr.GetUnsafeDelegate<DetachCurrentThreadDelegate>()!;
|
||||||
|
|
||||||
@@ -62,14 +62,14 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr findClassPtr = jInterface.FindClassPointer;
|
nint findClassPtr = jInterface.FindClassPointer;
|
||||||
FindClassDelegate findClass = findClassPtr.GetUnsafeDelegate<FindClassDelegate>()!;
|
FindClassDelegate findClass = findClassPtr.GetUnsafeDelegate<FindClassDelegate>()!;
|
||||||
JClassLocalRef jClass = findClass(jEnv, className.ValuePointer);
|
JClassLocalRef jClass = findClass(jEnv, className.ValuePointer);
|
||||||
|
|
||||||
if (ExceptionCheck(jEnv))
|
if (ExceptionCheck(jEnv))
|
||||||
return default;
|
return default;
|
||||||
|
|
||||||
IntPtr newGlobalRefPtr = jInterface.NewGlobalRefPointer;
|
nint newGlobalRefPtr = jInterface.NewGlobalRefPointer;
|
||||||
NewGlobalRefDelegate newGlobalRef = newGlobalRefPtr.GetUnsafeDelegate<NewGlobalRefDelegate>()!;
|
NewGlobalRefDelegate newGlobalRef = newGlobalRefPtr.GetUnsafeDelegate<NewGlobalRefDelegate>()!;
|
||||||
|
|
||||||
JGlobalRef jGlobal = newGlobalRef(jEnv, (JObjectLocalRef)jClass);
|
JGlobalRef jGlobal = newGlobalRef(jEnv, (JObjectLocalRef)jClass);
|
||||||
@@ -82,7 +82,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr deleteLocalRefPtr = jInterface.DeleteLocalRefPointer;
|
nint deleteLocalRefPtr = jInterface.DeleteLocalRefPointer;
|
||||||
DeleteLocalRefDelegate deleteLocalRef = deleteLocalRefPtr.GetUnsafeDelegate<DeleteLocalRefDelegate>()!;
|
DeleteLocalRefDelegate deleteLocalRef = deleteLocalRefPtr.GetUnsafeDelegate<DeleteLocalRefDelegate>()!;
|
||||||
|
|
||||||
deleteLocalRef(jEnv, jObject);
|
deleteLocalRef(jEnv, jObject);
|
||||||
@@ -92,7 +92,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr deleteGlobalRefPtr = jInterface.DeleteGlobalRefPointer;
|
nint deleteGlobalRefPtr = jInterface.DeleteGlobalRefPointer;
|
||||||
DeleteGlobalRefDelegate deleteGlobalRef = deleteGlobalRefPtr.GetUnsafeDelegate<DeleteGlobalRefDelegate>()!;
|
DeleteGlobalRefDelegate deleteGlobalRef = deleteGlobalRefPtr.GetUnsafeDelegate<DeleteGlobalRefDelegate>()!;
|
||||||
|
|
||||||
deleteGlobalRef(jEnv, jObject);
|
deleteGlobalRef(jEnv, jObject);
|
||||||
@@ -102,7 +102,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr deleteWeakGlobalRefPtr = jInterface.DeleteWeakGlobalRefPointer;
|
nint deleteWeakGlobalRefPtr = jInterface.DeleteWeakGlobalRefPointer;
|
||||||
DeleteWeakGlobalRefDelegate deleteWeakGlobalRef =
|
DeleteWeakGlobalRefDelegate deleteWeakGlobalRef =
|
||||||
deleteWeakGlobalRefPtr.GetUnsafeDelegate<DeleteWeakGlobalRefDelegate>()!;
|
deleteWeakGlobalRefPtr.GetUnsafeDelegate<DeleteWeakGlobalRefDelegate>()!;
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr newStringPtr = jInterface.NewStringPointer;
|
nint newStringPtr = jInterface.NewStringPointer;
|
||||||
NewStringDelegate newString = newStringPtr.GetUnsafeDelegate<NewStringDelegate>()!;
|
NewStringDelegate newString = newStringPtr.GetUnsafeDelegate<NewStringDelegate>()!;
|
||||||
using IReadOnlyFixedMemory<Char>.IDisposable ctx = textValue.AsMemory().GetFixedContext();
|
using IReadOnlyFixedMemory<Char>.IDisposable ctx = textValue.AsMemory().GetFixedContext();
|
||||||
JStringLocalRef jString = newString(jEnv, ctx.ValuePointer, ctx.Values.Length);
|
JStringLocalRef jString = newString(jEnv, ctx.ValuePointer, ctx.Values.Length);
|
||||||
@@ -125,7 +125,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr newWeakGlobalRefPtr = jInterface.NewWeakGlobalRefPointer;
|
nint newWeakGlobalRefPtr = jInterface.NewWeakGlobalRefPointer;
|
||||||
NewWeakGlobalRefDelegate newWeakGlobalRef = newWeakGlobalRefPtr.GetUnsafeDelegate<NewWeakGlobalRefDelegate>()!;
|
NewWeakGlobalRefDelegate newWeakGlobalRef = newWeakGlobalRefPtr.GetUnsafeDelegate<NewWeakGlobalRefDelegate>()!;
|
||||||
JWeakRef jWeak = newWeakGlobalRef(jEnv, jObject);
|
JWeakRef jWeak = newWeakGlobalRef(jEnv, jObject);
|
||||||
|
|
||||||
@@ -136,13 +136,13 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr exceptionCheckPtr = jInterface.ExceptionCheckPointer;
|
nint exceptionCheckPtr = jInterface.ExceptionCheckPointer;
|
||||||
ExceptionCheckDelegate exceptionCheck = exceptionCheckPtr.GetUnsafeDelegate<ExceptionCheckDelegate>()!;
|
ExceptionCheckDelegate exceptionCheck = exceptionCheckPtr.GetUnsafeDelegate<ExceptionCheckDelegate>()!;
|
||||||
|
|
||||||
if (!exceptionCheck(jEnv))
|
if (!exceptionCheck(jEnv))
|
||||||
return false;
|
return false;
|
||||||
IntPtr exceptionDescribePtr = jInterface.ExceptionDescribePointer;
|
nint exceptionDescribePtr = jInterface.ExceptionDescribePointer;
|
||||||
IntPtr exceptionClearPtr = jInterface.ExceptionClearPointer;
|
nint exceptionClearPtr = jInterface.ExceptionClearPointer;
|
||||||
|
|
||||||
ExceptionDescribeDelegate exceptionDescribe =
|
ExceptionDescribeDelegate exceptionDescribe =
|
||||||
exceptionDescribePtr.GetUnsafeDelegate<ExceptionDescribeDelegate>()!;
|
exceptionDescribePtr.GetUnsafeDelegate<ExceptionDescribeDelegate>()!;
|
||||||
@@ -157,7 +157,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr getJavaVmPtr = jInterface.GetJavaVMPointer;
|
nint getJavaVmPtr = jInterface.GetJavaVMPointer;
|
||||||
GetVirtualMachineDelegate getJavaVm = getJavaVmPtr.GetUnsafeDelegate<GetVirtualMachineDelegate>()!;
|
GetVirtualMachineDelegate getJavaVm = getJavaVmPtr.GetUnsafeDelegate<GetVirtualMachineDelegate>()!;
|
||||||
return getJavaVm(jEnv, out JavaVMRef javaVm) == JResult.Ok ? javaVm : null;
|
return getJavaVm(jEnv, out JavaVMRef javaVm) == JResult.Ok ? javaVm : null;
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr isSameObjectPtr = jInterface.IsSameObjectPointer;
|
nint isSameObjectPtr = jInterface.IsSameObjectPointer;
|
||||||
IsSameObjectDelegate isSameObject = isSameObjectPtr.GetUnsafeDelegate<IsSameObjectDelegate>()!;
|
IsSameObjectDelegate isSameObject = isSameObjectPtr.GetUnsafeDelegate<IsSameObjectDelegate>()!;
|
||||||
JBoolean result = isSameObject(jEnv, (JObjectLocalRef)jWeak, default);
|
JBoolean result = isSameObject(jEnv, (JObjectLocalRef)jWeak, default);
|
||||||
return !ExceptionCheck(jEnv) ? !result : null;
|
return !ExceptionCheck(jEnv) ? !result : null;
|
||||||
@@ -177,7 +177,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr getMethodIdPtr = jInterface.GetMethodIdPointer;
|
nint getMethodIdPtr = jInterface.GetMethodIdPointer;
|
||||||
GetMethodIdDelegate getMethodId = getMethodIdPtr.GetUnsafeDelegate<GetMethodIdDelegate>()!;
|
GetMethodIdDelegate getMethodId = getMethodIdPtr.GetUnsafeDelegate<GetMethodIdDelegate>()!;
|
||||||
JMethodId methodId = getMethodId(jEnv, jClass, methodName.ValuePointer, descriptor.ValuePointer);
|
JMethodId methodId = getMethodId(jEnv, jClass, methodName.ValuePointer, descriptor.ValuePointer);
|
||||||
return !ExceptionCheck(jEnv) ? methodId : null;
|
return !ExceptionCheck(jEnv) ? methodId : null;
|
||||||
@@ -188,7 +188,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr getStaticMethodIdPtr = jInterface.GetStaticMethodIdPointer;
|
nint getStaticMethodIdPtr = jInterface.GetStaticMethodIdPointer;
|
||||||
GetStaticMethodIdDelegate getStaticMethodId =
|
GetStaticMethodIdDelegate getStaticMethodId =
|
||||||
getStaticMethodIdPtr.GetUnsafeDelegate<GetStaticMethodIdDelegate>()!;
|
getStaticMethodIdPtr.GetUnsafeDelegate<GetStaticMethodIdDelegate>()!;
|
||||||
JMethodId jMethodId = getStaticMethodId(jEnv, jClass, methodName.ValuePointer, descriptor.ValuePointer);
|
JMethodId jMethodId = getStaticMethodId(jEnv, jClass, methodName.ValuePointer, descriptor.ValuePointer);
|
||||||
@@ -200,7 +200,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr callStaticVoidMethodPtr = jInterface.CallStaticVoidMethodAPointer;
|
nint callStaticVoidMethodPtr = jInterface.CallStaticVoidMethodAPointer;
|
||||||
CallStaticVoidMethodADelegate callStaticVoidMethod =
|
CallStaticVoidMethodADelegate callStaticVoidMethod =
|
||||||
callStaticVoidMethodPtr.GetUnsafeDelegate<CallStaticVoidMethodADelegate>()!;
|
callStaticVoidMethodPtr.GetUnsafeDelegate<CallStaticVoidMethodADelegate>()!;
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr callStaticObjectMethodPtr = jInterface.CallStaticObjectMethodAPointer;
|
nint callStaticObjectMethodPtr = jInterface.CallStaticObjectMethodAPointer;
|
||||||
CallStaticObjectMethodADelegate callStaticObjectMethod =
|
CallStaticObjectMethodADelegate callStaticObjectMethod =
|
||||||
callStaticObjectMethodPtr.GetUnsafeDelegate<CallStaticObjectMethodADelegate>()!;
|
callStaticObjectMethodPtr.GetUnsafeDelegate<CallStaticObjectMethodADelegate>()!;
|
||||||
|
|
||||||
@@ -227,7 +227,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr callStaticLongMethodPtr = jInterface.CallStaticLongMethodAPointer;
|
nint callStaticLongMethodPtr = jInterface.CallStaticLongMethodAPointer;
|
||||||
CallStaticLongMethodADelegate callStaticLongMethod =
|
CallStaticLongMethodADelegate callStaticLongMethod =
|
||||||
callStaticLongMethodPtr.GetUnsafeDelegate<CallStaticLongMethodADelegate>()!;
|
callStaticLongMethodPtr.GetUnsafeDelegate<CallStaticLongMethodADelegate>()!;
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ namespace LibKenjinx.Jni
|
|||||||
ref readonly JEnvValue value = ref jEnv.Environment;
|
ref readonly JEnvValue value = ref jEnv.Environment;
|
||||||
ref JNativeInterface jInterface = ref value.Functions;
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
IntPtr callVoidMethodPtr = jInterface.CallVoidMethodAPointer;
|
nint callVoidMethodPtr = jInterface.CallVoidMethodAPointer;
|
||||||
CallVoidMethodADelegate callVoidMethod = callVoidMethodPtr.GetUnsafeDelegate<CallVoidMethodADelegate>()!;
|
CallVoidMethodADelegate callVoidMethod = callVoidMethodPtr.GetUnsafeDelegate<CallVoidMethodADelegate>()!;
|
||||||
|
|
||||||
using IReadOnlyFixedMemory<JValue>.IDisposable fArgs = args.AsMemory().GetFixedContext();
|
using IReadOnlyFixedMemory<JValue>.IDisposable fArgs = args.AsMemory().GetFixedContext();
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ namespace LibKenjinx.Jni.Pointers
|
|||||||
public readonly struct JEnvRef : IEquatable<JEnvRef>
|
public readonly struct JEnvRef : IEquatable<JEnvRef>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
public JEnvRef(IntPtr val)
|
public JEnvRef(nint val)
|
||||||
{
|
{
|
||||||
_value = val;
|
_value = val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace LibKenjinx.Jni.Pointers;
|
|||||||
public readonly struct JavaVMRef : IEquatable<JavaVMRef>
|
public readonly struct JavaVMRef : IEquatable<JavaVMRef>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Operators
|
#region Operators
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.References
|
|||||||
public readonly struct JObjectLocalRef : IEquatable<JObjectLocalRef>
|
public readonly struct JObjectLocalRef : IEquatable<JObjectLocalRef>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.Values
|
|||||||
internal readonly struct JEnvValue : IEquatable<JEnvValue>
|
internal readonly struct JEnvValue : IEquatable<JEnvValue>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Operators
|
#region Operators
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ namespace LibKenjinx.Jni.Values
|
|||||||
public readonly struct JInvokeInterface
|
public readonly struct JInvokeInterface
|
||||||
{
|
{
|
||||||
#pragma warning disable 0169
|
#pragma warning disable 0169
|
||||||
private readonly IntPtr _reserved0;
|
private readonly nint _reserved0;
|
||||||
private readonly IntPtr _reserved1;
|
private readonly nint _reserved1;
|
||||||
private readonly IntPtr _reserved2;
|
private readonly nint _reserved2;
|
||||||
#pragma warning restore 0169
|
#pragma warning restore 0169
|
||||||
internal IntPtr DestroyJavaVMPointer { get; init; }
|
internal nint DestroyJavaVMPointer { get; init; }
|
||||||
internal IntPtr AttachCurrentThreadPointer { get; init; }
|
internal nint AttachCurrentThreadPointer { get; init; }
|
||||||
internal IntPtr DetachCurrentThreadPointer { get; init; }
|
internal nint DetachCurrentThreadPointer { get; init; }
|
||||||
internal IntPtr GetEnvPointer { get; init; }
|
internal nint GetEnvPointer { get; init; }
|
||||||
internal IntPtr AttachCurrentThreadAsDaemonPointer { get; init; }
|
internal nint AttachCurrentThreadAsDaemonPointer { get; init; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,238 +10,238 @@ namespace LibKenjinx.Jni.Values;
|
|||||||
public readonly struct JNativeInterface
|
public readonly struct JNativeInterface
|
||||||
{
|
{
|
||||||
#pragma warning disable 0169
|
#pragma warning disable 0169
|
||||||
private readonly IntPtr _reserved0;
|
private readonly nint _reserved0;
|
||||||
private readonly IntPtr _reserved1;
|
private readonly nint _reserved1;
|
||||||
private readonly IntPtr _reserved2;
|
private readonly nint _reserved2;
|
||||||
private readonly IntPtr _reserved3;
|
private readonly nint _reserved3;
|
||||||
#pragma warning restore 0169
|
#pragma warning restore 0169
|
||||||
internal readonly IntPtr GetVersionPointer { get; init; }
|
internal readonly nint GetVersionPointer { get; init; }
|
||||||
internal readonly IntPtr DefineClassPointer { get; init; }
|
internal readonly nint DefineClassPointer { get; init; }
|
||||||
internal readonly IntPtr FindClassPointer { get; init; }
|
internal readonly nint FindClassPointer { get; init; }
|
||||||
internal readonly IntPtr FromReflectedMethodPointer { get; init; }
|
internal readonly nint FromReflectedMethodPointer { get; init; }
|
||||||
internal readonly IntPtr FromReflectedFieldPointer { get; init; }
|
internal readonly nint FromReflectedFieldPointer { get; init; }
|
||||||
internal readonly IntPtr ToReflectedMethodPointer { get; init; }
|
internal readonly nint ToReflectedMethodPointer { get; init; }
|
||||||
internal readonly IntPtr GetSuperclassPointer { get; init; }
|
internal readonly nint GetSuperclassPointer { get; init; }
|
||||||
internal readonly IntPtr IsAssignableFromPointer { get; init; }
|
internal readonly nint IsAssignableFromPointer { get; init; }
|
||||||
internal readonly IntPtr ToReflectedFieldPointer { get; init; }
|
internal readonly nint ToReflectedFieldPointer { get; init; }
|
||||||
internal readonly IntPtr ThrowPointer { get; init; }
|
internal readonly nint ThrowPointer { get; init; }
|
||||||
internal readonly IntPtr ThrowNewPointer { get; init; }
|
internal readonly nint ThrowNewPointer { get; init; }
|
||||||
internal readonly IntPtr ExceptionOccurredPointer { get; init; }
|
internal readonly nint ExceptionOccurredPointer { get; init; }
|
||||||
internal readonly IntPtr ExceptionDescribePointer { get; init; }
|
internal readonly nint ExceptionDescribePointer { get; init; }
|
||||||
internal readonly IntPtr ExceptionClearPointer { get; init; }
|
internal readonly nint ExceptionClearPointer { get; init; }
|
||||||
internal readonly IntPtr FatalErrorPointer { get; init; }
|
internal readonly nint FatalErrorPointer { get; init; }
|
||||||
internal readonly IntPtr PushLocalFramePointer { get; init; }
|
internal readonly nint PushLocalFramePointer { get; init; }
|
||||||
internal readonly IntPtr PopLocalFramePointer { get; init; }
|
internal readonly nint PopLocalFramePointer { get; init; }
|
||||||
internal readonly IntPtr NewGlobalRefPointer { get; init; }
|
internal readonly nint NewGlobalRefPointer { get; init; }
|
||||||
internal readonly IntPtr DeleteGlobalRefPointer { get; init; }
|
internal readonly nint DeleteGlobalRefPointer { get; init; }
|
||||||
internal readonly IntPtr DeleteLocalRefPointer { get; init; }
|
internal readonly nint DeleteLocalRefPointer { get; init; }
|
||||||
internal readonly IntPtr IsSameObjectPointer { get; init; }
|
internal readonly nint IsSameObjectPointer { get; init; }
|
||||||
internal readonly IntPtr NewLocalRefPointer { get; init; }
|
internal readonly nint NewLocalRefPointer { get; init; }
|
||||||
internal readonly IntPtr EnsureLocalCapacityPointer { get; init; }
|
internal readonly nint EnsureLocalCapacityPointer { get; init; }
|
||||||
internal readonly IntPtr AllocObjectPointer { get; init; }
|
internal readonly nint AllocObjectPointer { get; init; }
|
||||||
internal readonly IntPtr NewObjectPointer { get; init; }
|
internal readonly nint NewObjectPointer { get; init; }
|
||||||
internal readonly IntPtr NewObjectVPointer { get; init; }
|
internal readonly nint NewObjectVPointer { get; init; }
|
||||||
internal readonly IntPtr NewObjectAPointer { get; init; }
|
internal readonly nint NewObjectAPointer { get; init; }
|
||||||
internal readonly IntPtr GetObjectClassPointer { get; init; }
|
internal readonly nint GetObjectClassPointer { get; init; }
|
||||||
internal readonly IntPtr IsInstanceOfPointer { get; init; }
|
internal readonly nint IsInstanceOfPointer { get; init; }
|
||||||
internal readonly IntPtr GetMethodIdPointer { get; init; }
|
internal readonly nint GetMethodIdPointer { get; init; }
|
||||||
private readonly IntPtr CallObjectMethodPointer { get; init; }
|
private readonly nint CallObjectMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallObjectMethodVPointer { get; init; }
|
private readonly nint CallObjectMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallObjectMethodAPointer { get; init; }
|
internal readonly nint CallObjectMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallBooleanMethodPointer { get; init; }
|
private readonly nint CallBooleanMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallBooleanMethodVPointer { get; init; }
|
private readonly nint CallBooleanMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallBooleanMethodAPointer { get; init; }
|
internal readonly nint CallBooleanMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallByteMethodPointer { get; init; }
|
private readonly nint CallByteMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallByteMethodVPointer { get; init; }
|
private readonly nint CallByteMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallByteMethodAPointer { get; init; }
|
internal readonly nint CallByteMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallCharMethodPointer { get; init; }
|
private readonly nint CallCharMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallCharMethodVPointer { get; init; }
|
private readonly nint CallCharMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallCharMethodAPointer { get; init; }
|
internal readonly nint CallCharMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallShortMethodPointer { get; init; }
|
private readonly nint CallShortMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallShortMethodVPointer { get; init; }
|
private readonly nint CallShortMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallShortMethodAPointer { get; init; }
|
internal readonly nint CallShortMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallIntMethodPointer { get; init; }
|
private readonly nint CallIntMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallIntMethodVPointer { get; init; }
|
private readonly nint CallIntMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallIntMethodAPointer { get; init; }
|
internal readonly nint CallIntMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallLongMethodPointer { get; init; }
|
private readonly nint CallLongMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallLongMethodVPointer { get; init; }
|
private readonly nint CallLongMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallLongMethodAPointer { get; init; }
|
internal readonly nint CallLongMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallFloatMethodPointer { get; init; }
|
private readonly nint CallFloatMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallFloatMethodVPointer { get; init; }
|
private readonly nint CallFloatMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallFloatMethodAPointer { get; init; }
|
internal readonly nint CallFloatMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallDoubleMethodPointer { get; init; }
|
private readonly nint CallDoubleMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallDoubleMethodVPointer { get; init; }
|
private readonly nint CallDoubleMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallDoubleMethodAPointer { get; init; }
|
internal readonly nint CallDoubleMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallVoidMethodPointer { get; init; }
|
private readonly nint CallVoidMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallVoidMethodVPointer { get; init; }
|
private readonly nint CallVoidMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallVoidMethodAPointer { get; init; }
|
internal readonly nint CallVoidMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualObjectMethodPointer { get; init; }
|
private readonly nint CallNonVirtualObjectMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualObjectMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualObjectMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualObjectMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualObjectMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualBooleanMethodPointer { get; init; }
|
private readonly nint CallNonVirtualBooleanMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualBooleanMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualBooleanMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualBooleanMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualBooleanMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualByteMethodPointer { get; init; }
|
private readonly nint CallNonVirtualByteMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualByteMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualByteMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualByteMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualByteMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualCharMethodPointer { get; init; }
|
private readonly nint CallNonVirtualCharMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualCharMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualCharMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualCharMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualCharMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualShortMethodPointer { get; init; }
|
private readonly nint CallNonVirtualShortMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualShortMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualShortMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualShortMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualShortMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualIntMethodPointer { get; init; }
|
private readonly nint CallNonVirtualIntMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualIntMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualIntMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualIntMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualIntMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualLongMethodPointer { get; init; }
|
private readonly nint CallNonVirtualLongMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualLongMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualLongMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualLongMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualLongMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualFloatMethodPointer { get; init; }
|
private readonly nint CallNonVirtualFloatMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualFloatMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualFloatMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualFloatMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualFloatMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualDoubleMethodPointer { get; init; }
|
private readonly nint CallNonVirtualDoubleMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualDoubleMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualDoubleMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualDoubleMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualDoubleMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualVoidMethodPointer { get; init; }
|
private readonly nint CallNonVirtualVoidMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallNonVirtualVoidMethodVPointer { get; init; }
|
private readonly nint CallNonVirtualVoidMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallNonVirtualVoidMethodAPointer { get; init; }
|
internal readonly nint CallNonVirtualVoidMethodAPointer { get; init; }
|
||||||
internal readonly IntPtr GetFieldIdPointer { get; init; }
|
internal readonly nint GetFieldIdPointer { get; init; }
|
||||||
internal readonly IntPtr GetObjectFieldPointer { get; init; }
|
internal readonly nint GetObjectFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetBooleanFieldPointer { get; init; }
|
internal readonly nint GetBooleanFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetByteFieldPointer { get; init; }
|
internal readonly nint GetByteFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetCharFieldPointer { get; init; }
|
internal readonly nint GetCharFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetShortFieldPointer { get; init; }
|
internal readonly nint GetShortFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetIntFieldPointer { get; init; }
|
internal readonly nint GetIntFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetLongFieldPointer { get; init; }
|
internal readonly nint GetLongFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetFloatFieldPointer { get; init; }
|
internal readonly nint GetFloatFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetDoubleFieldPointer { get; init; }
|
internal readonly nint GetDoubleFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetObjectFieldPointer { get; init; }
|
internal readonly nint SetObjectFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetBooleanFieldPointer { get; init; }
|
internal readonly nint SetBooleanFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetByteFieldPointer { get; init; }
|
internal readonly nint SetByteFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetCharFieldPointer { get; init; }
|
internal readonly nint SetCharFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetShortFieldPointer { get; init; }
|
internal readonly nint SetShortFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetIntFieldPointer { get; init; }
|
internal readonly nint SetIntFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetLongFieldPointer { get; init; }
|
internal readonly nint SetLongFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetFloatFieldPointer { get; init; }
|
internal readonly nint SetFloatFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetDoubleFieldPointer { get; init; }
|
internal readonly nint SetDoubleFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticMethodIdPointer { get; init; }
|
internal readonly nint GetStaticMethodIdPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticObjectMethodPointer { get; init; }
|
private readonly nint CallStaticObjectMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticObjectMethodVPointer { get; init; }
|
private readonly nint CallStaticObjectMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticObjectMethodAPointer { get; init; }
|
internal readonly nint CallStaticObjectMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticBooleanMethodPointer { get; init; }
|
private readonly nint CallStaticBooleanMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticBooleanMethodVPointer { get; init; }
|
private readonly nint CallStaticBooleanMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticBooleanMethodAPointer { get; init; }
|
internal readonly nint CallStaticBooleanMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticByteMethodPointer { get; init; }
|
private readonly nint CallStaticByteMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticByteMethodVPointer { get; init; }
|
private readonly nint CallStaticByteMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticByteMethodAPointer { get; init; }
|
internal readonly nint CallStaticByteMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticCharMethodPointer { get; init; }
|
private readonly nint CallStaticCharMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticCharMethodVPointer { get; init; }
|
private readonly nint CallStaticCharMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticCharMethodAPointer { get; init; }
|
internal readonly nint CallStaticCharMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticShortMethodPointer { get; init; }
|
private readonly nint CallStaticShortMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticShortMethodVPointer { get; init; }
|
private readonly nint CallStaticShortMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticShortMethodAPointer { get; init; }
|
internal readonly nint CallStaticShortMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticIntMethodPointer { get; init; }
|
private readonly nint CallStaticIntMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticIntMethodVPointer { get; init; }
|
private readonly nint CallStaticIntMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticIntMethodAPointer { get; init; }
|
internal readonly nint CallStaticIntMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticLongMethodPointer { get; init; }
|
private readonly nint CallStaticLongMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticLongMethodVPointer { get; init; }
|
private readonly nint CallStaticLongMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticLongMethodAPointer { get; init; }
|
internal readonly nint CallStaticLongMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticFloatMethodPointer { get; init; }
|
private readonly nint CallStaticFloatMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticFloatMethodVPointer { get; init; }
|
private readonly nint CallStaticFloatMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticFloatMethodAPointer { get; init; }
|
internal readonly nint CallStaticFloatMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticDoubleMethodPointer { get; init; }
|
private readonly nint CallStaticDoubleMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticDoubleMethodVPointer { get; init; }
|
private readonly nint CallStaticDoubleMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticDoubleMethodAPointer { get; init; }
|
internal readonly nint CallStaticDoubleMethodAPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticVoidMethodPointer { get; init; }
|
private readonly nint CallStaticVoidMethodPointer { get; init; }
|
||||||
private readonly IntPtr CallStaticVoidMethodVPointer { get; init; }
|
private readonly nint CallStaticVoidMethodVPointer { get; init; }
|
||||||
internal readonly IntPtr CallStaticVoidMethodAPointer { get; init; }
|
internal readonly nint CallStaticVoidMethodAPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticFieldIdPointer { get; init; }
|
internal readonly nint GetStaticFieldIdPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticObjectFieldPointer { get; init; }
|
internal readonly nint GetStaticObjectFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticBooleanFieldPointer { get; init; }
|
internal readonly nint GetStaticBooleanFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticByteFieldPointer { get; init; }
|
internal readonly nint GetStaticByteFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticCharFieldPointer { get; init; }
|
internal readonly nint GetStaticCharFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticShortFieldPointer { get; init; }
|
internal readonly nint GetStaticShortFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticIntFieldPointer { get; init; }
|
internal readonly nint GetStaticIntFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticLongFieldPointer { get; init; }
|
internal readonly nint GetStaticLongFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticFloatFieldPointer { get; init; }
|
internal readonly nint GetStaticFloatFieldPointer { get; init; }
|
||||||
internal readonly IntPtr GetStaticDoubleFieldPointer { get; init; }
|
internal readonly nint GetStaticDoubleFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticObjectFieldPointer { get; init; }
|
internal readonly nint SetStaticObjectFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticBooleanFieldPointer { get; init; }
|
internal readonly nint SetStaticBooleanFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticByteFieldPointer { get; init; }
|
internal readonly nint SetStaticByteFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticCharFieldPointer { get; init; }
|
internal readonly nint SetStaticCharFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticShortFieldPointer { get; init; }
|
internal readonly nint SetStaticShortFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticIntFieldPointer { get; init; }
|
internal readonly nint SetStaticIntFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticLongFieldPointer { get; init; }
|
internal readonly nint SetStaticLongFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticFloatFieldPointer { get; init; }
|
internal readonly nint SetStaticFloatFieldPointer { get; init; }
|
||||||
internal readonly IntPtr SetStaticDoubleFieldPointer { get; init; }
|
internal readonly nint SetStaticDoubleFieldPointer { get; init; }
|
||||||
internal readonly IntPtr NewStringPointer { get; init; }
|
internal readonly nint NewStringPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringLengthPointer { get; init; }
|
internal readonly nint GetStringLengthPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringCharsPointer { get; init; }
|
internal readonly nint GetStringCharsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseStringCharsPointer { get; init; }
|
internal readonly nint ReleaseStringCharsPointer { get; init; }
|
||||||
internal readonly IntPtr NewStringUtfPointer { get; init; }
|
internal readonly nint NewStringUtfPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringUtfLengthPointer { get; init; }
|
internal readonly nint GetStringUtfLengthPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringUtfCharsPointer { get; init; }
|
internal readonly nint GetStringUtfCharsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseStringUtfCharsPointer { get; init; }
|
internal readonly nint ReleaseStringUtfCharsPointer { get; init; }
|
||||||
internal readonly IntPtr GetArrayLengthPointer { get; init; }
|
internal readonly nint GetArrayLengthPointer { get; init; }
|
||||||
internal readonly IntPtr NewObjectArrayPointer { get; init; }
|
internal readonly nint NewObjectArrayPointer { get; init; }
|
||||||
internal readonly IntPtr GetObjectArrayElementPointer { get; init; }
|
internal readonly nint GetObjectArrayElementPointer { get; init; }
|
||||||
internal readonly IntPtr SetObjectArrayElementPointer { get; init; }
|
internal readonly nint SetObjectArrayElementPointer { get; init; }
|
||||||
internal readonly IntPtr NewBooleanArrayPointer { get; init; }
|
internal readonly nint NewBooleanArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewByteArrayPointer { get; init; }
|
internal readonly nint NewByteArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewCharArrayPointer { get; init; }
|
internal readonly nint NewCharArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewShortArrayPointer { get; init; }
|
internal readonly nint NewShortArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewIntArrayPointer { get; init; }
|
internal readonly nint NewIntArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewLongArrayPointer { get; init; }
|
internal readonly nint NewLongArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewFloatArrayPointer { get; init; }
|
internal readonly nint NewFloatArrayPointer { get; init; }
|
||||||
internal readonly IntPtr NewDoubleArrayPointer { get; init; }
|
internal readonly nint NewDoubleArrayPointer { get; init; }
|
||||||
internal readonly IntPtr GetBooleanArrayElementsPointer { get; init; }
|
internal readonly nint GetBooleanArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetByteArrayElementsPointer { get; init; }
|
internal readonly nint GetByteArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetCharArrayElementsPointer { get; init; }
|
internal readonly nint GetCharArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetShortArrayElementsPointer { get; init; }
|
internal readonly nint GetShortArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetIntArrayElementsPointer { get; init; }
|
internal readonly nint GetIntArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetLongArrayElementsPointer { get; init; }
|
internal readonly nint GetLongArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetFloatArrayElementsPointer { get; init; }
|
internal readonly nint GetFloatArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetDoubleArrayElementsPointer { get; init; }
|
internal readonly nint GetDoubleArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseBooleanArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseBooleanArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseByteArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseByteArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseCharArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseCharArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseShortArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseShortArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseIntArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseIntArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseLongArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseLongArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseFloatArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseFloatArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseDoubleArrayElementsPointer { get; init; }
|
internal readonly nint ReleaseDoubleArrayElementsPointer { get; init; }
|
||||||
internal readonly IntPtr GetBooleanArrayRegionPointer { get; init; }
|
internal readonly nint GetBooleanArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetByteArrayRegionPointer { get; init; }
|
internal readonly nint GetByteArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetCharArrayRegionPointer { get; init; }
|
internal readonly nint GetCharArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetShortArrayRegionPointer { get; init; }
|
internal readonly nint GetShortArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetIntArrayRegionPointer { get; init; }
|
internal readonly nint GetIntArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetLongArrayRegionPointer { get; init; }
|
internal readonly nint GetLongArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetFloatArrayRegionPointer { get; init; }
|
internal readonly nint GetFloatArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetDoubleArrayRegionPointer { get; init; }
|
internal readonly nint GetDoubleArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetBooleanArrayRegionPointer { get; init; }
|
internal readonly nint SetBooleanArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetByteArrayRegionPointer { get; init; }
|
internal readonly nint SetByteArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetCharArrayRegionPointer { get; init; }
|
internal readonly nint SetCharArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetShortArrayRegionPointer { get; init; }
|
internal readonly nint SetShortArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetIntArrayRegionPointer { get; init; }
|
internal readonly nint SetIntArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetLongArrayRegionPointer { get; init; }
|
internal readonly nint SetLongArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetFloatArrayRegionPointer { get; init; }
|
internal readonly nint SetFloatArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr SetDoubleArrayRegionPointer { get; init; }
|
internal readonly nint SetDoubleArrayRegionPointer { get; init; }
|
||||||
internal readonly IntPtr RegisterNativesPointer { get; init; }
|
internal readonly nint RegisterNativesPointer { get; init; }
|
||||||
internal readonly IntPtr UnregisterNativesPointer { get; init; }
|
internal readonly nint UnregisterNativesPointer { get; init; }
|
||||||
internal readonly IntPtr MonitorEnterPointer { get; init; }
|
internal readonly nint MonitorEnterPointer { get; init; }
|
||||||
internal readonly IntPtr MonitorExitPointer { get; init; }
|
internal readonly nint MonitorExitPointer { get; init; }
|
||||||
internal readonly IntPtr GetJavaVMPointer { get; init; }
|
internal readonly nint GetJavaVMPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringRegionPointer { get; init; }
|
internal readonly nint GetStringRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringUtfRegionPointer { get; init; }
|
internal readonly nint GetStringUtfRegionPointer { get; init; }
|
||||||
internal readonly IntPtr GetPrimitiveArrayCriticalPointer { get; init; }
|
internal readonly nint GetPrimitiveArrayCriticalPointer { get; init; }
|
||||||
internal readonly IntPtr ReleasePrimitiveArrayCriticalPointer { get; init; }
|
internal readonly nint ReleasePrimitiveArrayCriticalPointer { get; init; }
|
||||||
internal readonly IntPtr GetStringCriticalPointer { get; init; }
|
internal readonly nint GetStringCriticalPointer { get; init; }
|
||||||
internal readonly IntPtr ReleaseStringCriticalPointer { get; init; }
|
internal readonly nint ReleaseStringCriticalPointer { get; init; }
|
||||||
internal readonly IntPtr NewWeakGlobalRefPointer { get; init; }
|
internal readonly nint NewWeakGlobalRefPointer { get; init; }
|
||||||
internal readonly IntPtr DeleteWeakGlobalRefPointer { get; init; }
|
internal readonly nint DeleteWeakGlobalRefPointer { get; init; }
|
||||||
internal readonly IntPtr ExceptionCheckPointer { get; init; }
|
internal readonly nint ExceptionCheckPointer { get; init; }
|
||||||
internal readonly IntPtr NewDirectByteBufferPointer { get; init; }
|
internal readonly nint NewDirectByteBufferPointer { get; init; }
|
||||||
internal readonly IntPtr GetDirectBufferAddressPointer { get; init; }
|
internal readonly nint GetDirectBufferAddressPointer { get; init; }
|
||||||
internal readonly IntPtr GetDirectBufferCapacityPointer { get; init; }
|
internal readonly nint GetDirectBufferCapacityPointer { get; init; }
|
||||||
internal readonly IntPtr GetObjectRefTypePointer { get; init; }
|
internal readonly nint GetObjectRefTypePointer { get; init; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ public readonly struct JNativeMethod
|
|||||||
{
|
{
|
||||||
internal ReadOnlyValPtr<Byte> Name { get; init; }
|
internal ReadOnlyValPtr<Byte> Name { get; init; }
|
||||||
internal ReadOnlyValPtr<Byte> Signature { get; init; }
|
internal ReadOnlyValPtr<Byte> Signature { get; init; }
|
||||||
internal IntPtr Pointer { get; init; }
|
internal nint Pointer { get; init; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.Values
|
|||||||
{
|
{
|
||||||
internal Int32 Version { get; init; }
|
internal Int32 Version { get; init; }
|
||||||
internal Int32 OptionsLenght { get; init; }
|
internal Int32 OptionsLenght { get; init; }
|
||||||
internal IntPtr Options { get; init; }
|
internal nint Options { get; init; }
|
||||||
internal Boolean IgnoreUnrecognized { get; init; }
|
internal Boolean IgnoreUnrecognized { get; init; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ namespace LibKenjinx.Jni.Values;
|
|||||||
public readonly struct JavaVMOption
|
public readonly struct JavaVMOption
|
||||||
{
|
{
|
||||||
internal ReadOnlyValPtr<Byte> Name { get; init; }
|
internal ReadOnlyValPtr<Byte> Name { get; init; }
|
||||||
internal IntPtr ExtraInfo { get; init; }
|
internal nint ExtraInfo { get; init; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace LibKenjinx.Jni.Values;
|
|||||||
internal readonly struct JavaVMValue : IEquatable<JavaVMValue>
|
internal readonly struct JavaVMValue : IEquatable<JavaVMValue>
|
||||||
{
|
{
|
||||||
#pragma warning disable 0649
|
#pragma warning disable 0649
|
||||||
private readonly IntPtr _value;
|
private readonly nint _value;
|
||||||
#pragma warning restore 0649
|
#pragma warning restore 0649
|
||||||
|
|
||||||
#region Operators
|
#region Operators
|
||||||
|
|||||||
@@ -292,10 +292,10 @@ namespace LibKenjinx
|
|||||||
[DllImport("libkenjinxjni")]
|
[DllImport("libkenjinxjni")]
|
||||||
internal extern static void setCurrentTransform(long native_window, int transform);
|
internal extern static void setCurrentTransform(long native_window, int transform);
|
||||||
|
|
||||||
public delegate IntPtr JniCreateSurface(IntPtr native_surface, IntPtr instance);
|
public delegate nint JniCreateSurface(nint native_surface, nint instance);
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "javaInitialize")]
|
[UnmanagedCallersOnly(EntryPoint = "javaInitialize")]
|
||||||
public unsafe static bool JniInitialize(IntPtr jpathId, IntPtr jniEnv)
|
public unsafe static bool JniInitialize(nint jpathId, nint jniEnv)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
PlatformInfo.IsBionic = true;
|
PlatformInfo.IsBionic = true;
|
||||||
@@ -339,7 +339,7 @@ namespace LibKenjinx
|
|||||||
bool enableInternetAccess,
|
bool enableInternetAccess,
|
||||||
bool enableFsIntegrityChecks,
|
bool enableFsIntegrityChecks,
|
||||||
int fsGlobalAccessLogMode,
|
int fsGlobalAccessLogMode,
|
||||||
IntPtr timeZonePtr,
|
nint timeZonePtr,
|
||||||
bool ignoreMissingServices)
|
bool ignoreMissingServices)
|
||||||
{
|
{
|
||||||
debug_break(4);
|
debug_break(4);
|
||||||
@@ -405,7 +405,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "deviceGetDlcContentList")]
|
[UnmanagedCallersOnly(EntryPoint = "deviceGetDlcContentList")]
|
||||||
public static IntPtr JniGetDlcContentListNative(IntPtr pathPtr, long titleId)
|
public static nint JniGetDlcContentListNative(nint pathPtr, long titleId)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var list = GetDlcContentList(Marshal.PtrToStringAnsi(pathPtr) ?? "", (ulong)titleId);
|
var list = GetDlcContentList(Marshal.PtrToStringAnsi(pathPtr) ?? "", (ulong)titleId);
|
||||||
@@ -414,7 +414,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "deviceGetDlcTitleId")]
|
[UnmanagedCallersOnly(EntryPoint = "deviceGetDlcTitleId")]
|
||||||
public static long JniGetDlcTitleIdNative(IntPtr pathPtr, IntPtr ncaPath)
|
public static long JniGetDlcTitleIdNative(nint pathPtr, nint ncaPath)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
return Marshal.StringToHGlobalAnsi(GetDlcTitleId(Marshal.PtrToStringAnsi(pathPtr) ?? "", Marshal.PtrToStringAnsi(ncaPath) ?? ""));
|
return Marshal.StringToHGlobalAnsi(GetDlcTitleId(Marshal.PtrToStringAnsi(pathPtr) ?? "", Marshal.PtrToStringAnsi(ncaPath) ?? ""));
|
||||||
@@ -457,13 +457,13 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "deviceVerifyFirmware")]
|
[UnmanagedCallersOnly(EntryPoint = "deviceVerifyFirmware")]
|
||||||
public static IntPtr JniVerifyFirmware(int descriptor, bool isXci)
|
public static nint JniVerifyFirmware(int descriptor, bool isXci)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
|
|
||||||
var stream = OpenFile(descriptor);
|
var stream = OpenFile(descriptor);
|
||||||
|
|
||||||
IntPtr stringHandle = 0;
|
nint stringHandle = 0;
|
||||||
string? version = "0.0";
|
string? version = "0.0";
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -494,7 +494,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "deviceGetInstalledFirmwareVersion")]
|
[UnmanagedCallersOnly(EntryPoint = "deviceGetInstalledFirmwareVersion")]
|
||||||
public static IntPtr JniGetInstalledFirmwareVersion()
|
public static nint JniGetInstalledFirmwareVersion()
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
|
|
||||||
@@ -544,12 +544,12 @@ namespace LibKenjinx
|
|||||||
|
|
||||||
for (int i = 0; i < extensionsLength; i++)
|
for (int i = 0; i < extensionsLength; i++)
|
||||||
{
|
{
|
||||||
extensions.Add(Marshal.PtrToStringAnsi((IntPtr)extensionsArray[i]));
|
extensions.Add(Marshal.PtrToStringAnsi((nint)extensionsArray[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (driverHandle != 0)
|
if (driverHandle != 0)
|
||||||
{
|
{
|
||||||
VulkanLoader = new VulkanLoader((IntPtr)driverHandle);
|
VulkanLoader = new VulkanLoader((nint)driverHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateSurface createSurfaceFunc = instance =>
|
CreateSurface createSurfaceFunc = instance =>
|
||||||
@@ -595,7 +595,7 @@ namespace LibKenjinx
|
|||||||
return (nint)surface.Handle;
|
return (nint)surface.Handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
return IntPtr.Zero;
|
return nint.Zero;
|
||||||
};
|
};
|
||||||
|
|
||||||
return InitializeGraphicsRenderer(GraphicsBackend.Vulkan, createSurfaceFunc, extensions.ToArray());
|
return InitializeGraphicsRenderer(GraphicsBackend.Vulkan, createSurfaceFunc, extensions.ToArray());
|
||||||
@@ -638,7 +638,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "deviceGetGameInfo")]
|
[UnmanagedCallersOnly(EntryPoint = "deviceGetGameInfo")]
|
||||||
public unsafe static void JniGetGameInfo(int fileDescriptor, IntPtr extension, IntPtr infoPtr)
|
public unsafe static void JniGetGameInfo(int fileDescriptor, nint extension, nint infoPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
using var stream = OpenFile(fileDescriptor);
|
using var stream = OpenFile(fileDescriptor);
|
||||||
@@ -740,7 +740,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userGetOpenedUser")]
|
[UnmanagedCallersOnly(EntryPoint = "userGetOpenedUser")]
|
||||||
public static IntPtr JniGetOpenedUser()
|
public static nint JniGetOpenedUser()
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = GetOpenedUser();
|
var userId = GetOpenedUser();
|
||||||
@@ -750,7 +750,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userGetUserPicture")]
|
[UnmanagedCallersOnly(EntryPoint = "userGetUserPicture")]
|
||||||
public static IntPtr JniGetUserPicture(IntPtr userIdPtr)
|
public static nint JniGetUserPicture(nint userIdPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -759,7 +759,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userSetUserPicture")]
|
[UnmanagedCallersOnly(EntryPoint = "userSetUserPicture")]
|
||||||
public static void JniGetUserPicture(IntPtr userIdPtr, IntPtr picturePtr)
|
public static void JniGetUserPicture(nint userIdPtr, nint picturePtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -769,7 +769,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userGetUserName")]
|
[UnmanagedCallersOnly(EntryPoint = "userGetUserName")]
|
||||||
public static IntPtr JniGetUserName(IntPtr userIdPtr)
|
public static nint JniGetUserName(nint userIdPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -778,7 +778,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userSetUserName")]
|
[UnmanagedCallersOnly(EntryPoint = "userSetUserName")]
|
||||||
public static void JniSetUserName(IntPtr userIdPtr, IntPtr userNamePtr)
|
public static void JniSetUserName(nint userIdPtr, nint userNamePtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -788,7 +788,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userGetAllUsers")]
|
[UnmanagedCallersOnly(EntryPoint = "userGetAllUsers")]
|
||||||
public static IntPtr JniGetAllUsers()
|
public static nint JniGetAllUsers()
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var users = GetAllUsers();
|
var users = GetAllUsers();
|
||||||
@@ -797,7 +797,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userAddUser")]
|
[UnmanagedCallersOnly(EntryPoint = "userAddUser")]
|
||||||
public static void JniAddUser(IntPtr userNamePtr, IntPtr picturePtr)
|
public static void JniAddUser(nint userNamePtr, nint picturePtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
||||||
@@ -807,7 +807,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userDeleteUser")]
|
[UnmanagedCallersOnly(EntryPoint = "userDeleteUser")]
|
||||||
public static void JniDeleteUser(IntPtr userIdPtr)
|
public static void JniDeleteUser(nint userIdPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -838,13 +838,13 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "uiHandlerSetResponse")]
|
[UnmanagedCallersOnly(EntryPoint = "uiHandlerSetResponse")]
|
||||||
public static void JniSetUiHandlerResponse(bool isOkPressed, IntPtr input)
|
public static void JniSetUiHandlerResponse(bool isOkPressed, nint input)
|
||||||
{
|
{
|
||||||
SetUiHandlerResponse(isOkPressed, Marshal.PtrToStringAnsi(input) ?? "");
|
SetUiHandlerResponse(isOkPressed, Marshal.PtrToStringAnsi(input) ?? "");
|
||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userOpenUser")]
|
[UnmanagedCallersOnly(EntryPoint = "userOpenUser")]
|
||||||
public static void JniOpenUser(IntPtr userIdPtr)
|
public static void JniOpenUser(nint userIdPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -853,7 +853,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "userCloseUser")]
|
[UnmanagedCallersOnly(EntryPoint = "userCloseUser")]
|
||||||
public static void JniCloseUser(IntPtr userIdPtr)
|
public static void JniCloseUser(nint userIdPtr)
|
||||||
{
|
{
|
||||||
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
Logger.Trace?.Print(LogClass.Application, "Jni Function Call");
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
@@ -1044,9 +1044,9 @@ namespace LibKenjinx
|
|||||||
|
|
||||||
// ===== Amiibo JNI Exports =====
|
// ===== Amiibo JNI Exports =====
|
||||||
[UnmanagedCallersOnly(EntryPoint = "amiiboLoadBin")]
|
[UnmanagedCallersOnly(EntryPoint = "amiiboLoadBin")]
|
||||||
public static bool JniAmiiboLoadBin(IntPtr dataPtr, int length)
|
public static bool JniAmiiboLoadBin(nint dataPtr, int length)
|
||||||
{
|
{
|
||||||
if (dataPtr == IntPtr.Zero || length <= 0) return false;
|
if (dataPtr == nint.Zero || length <= 0) return false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
byte[] buf = new byte[length];
|
byte[] buf = new byte[length];
|
||||||
@@ -1072,10 +1072,10 @@ namespace LibKenjinx
|
|||||||
|
|
||||||
{
|
{
|
||||||
[LibraryImport("liblog", StringMarshalling = StringMarshalling.Utf8)]
|
[LibraryImport("liblog", StringMarshalling = StringMarshalling.Utf8)]
|
||||||
private static partial void __android_log_print(LogLevel level, string? tag, string format, string args, IntPtr ptr);
|
private static partial void __android_log_print(LogLevel level, string? tag, string format, string args, nint ptr);
|
||||||
|
|
||||||
internal static void AndroidLogPrint(LogLevel level, string? tag, string message) =>
|
internal static void AndroidLogPrint(LogLevel level, string? tag, string message) =>
|
||||||
__android_log_print(level, tag, "%s", message, IntPtr.Zero);
|
__android_log_print(level, tag, "%s", message, nint.Zero);
|
||||||
|
|
||||||
internal enum LogLevel
|
internal enum LogLevel
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ namespace LibKenjinx
|
|||||||
private static bool _enableGraphicsLogging;
|
private static bool _enableGraphicsLogging;
|
||||||
|
|
||||||
public delegate void SwapBuffersCallback();
|
public delegate void SwapBuffersCallback();
|
||||||
public delegate IntPtr GetProcAddress(string name);
|
public delegate nint GetProcAddress(string name);
|
||||||
public delegate IntPtr CreateSurface(IntPtr instance);
|
public delegate nint CreateSurface(nint instance);
|
||||||
|
|
||||||
public static IRenderer? Renderer { get; set; }
|
public static IRenderer? Renderer { get; set; }
|
||||||
public static GraphicsConfiguration GraphicsConfiguration { get; private set; }
|
public static GraphicsConfiguration GraphicsConfiguration { get; private set; }
|
||||||
@@ -278,10 +278,10 @@ namespace LibKenjinx
|
|||||||
|
|
||||||
public struct NativeGraphicsInterop
|
public struct NativeGraphicsInterop
|
||||||
{
|
{
|
||||||
public IntPtr GlGetProcAddress;
|
public nint GlGetProcAddress;
|
||||||
public IntPtr VkNativeContextLoader;
|
public nint VkNativeContextLoader;
|
||||||
public IntPtr VkCreateSurface;
|
public nint VkCreateSurface;
|
||||||
public IntPtr VkRequiredExtensions;
|
public nint VkRequiredExtensions;
|
||||||
public int VkRequiredExtensionsCount;
|
public int VkRequiredExtensionsCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace LibKenjinx
|
|||||||
bool enableInternetAccess,
|
bool enableInternetAccess,
|
||||||
bool enableFsIntegrityChecks,
|
bool enableFsIntegrityChecks,
|
||||||
int fsGlobalAccessLogMode,
|
int fsGlobalAccessLogMode,
|
||||||
IntPtr timeZone,
|
nint timeZone,
|
||||||
bool ignoreMissingServices)
|
bool ignoreMissingServices)
|
||||||
{
|
{
|
||||||
return InitializeDevice(memoryManagerMode,
|
return InitializeDevice(memoryManagerMode,
|
||||||
@@ -59,7 +59,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_load")]
|
[UnmanagedCallersOnly(EntryPoint = "device_load")]
|
||||||
public static bool LoadApplicationNative(IntPtr pathPtr)
|
public static bool LoadApplicationNative(nint pathPtr)
|
||||||
{
|
{
|
||||||
if (SwitchDevice?.EmulationContext == null)
|
if (SwitchDevice?.EmulationContext == null)
|
||||||
{
|
{
|
||||||
@@ -80,14 +80,14 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_get_installed_firmware_version")]
|
[UnmanagedCallersOnly(EntryPoint = "device_get_installed_firmware_version")]
|
||||||
public static IntPtr GetInstalledFirmwareVersionNative()
|
public static nint GetInstalledFirmwareVersionNative()
|
||||||
{
|
{
|
||||||
var result = GetInstalledFirmwareVersion();
|
var result = GetInstalledFirmwareVersion();
|
||||||
return Marshal.StringToHGlobalAnsi(result);
|
return Marshal.StringToHGlobalAnsi(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "initialize")]
|
[UnmanagedCallersOnly(EntryPoint = "initialize")]
|
||||||
public static bool InitializeNative(IntPtr basePathPtr)
|
public static bool InitializeNative(nint basePathPtr)
|
||||||
{
|
{
|
||||||
var path = Marshal.PtrToStringAnsi(basePathPtr);
|
var path = Marshal.PtrToStringAnsi(basePathPtr);
|
||||||
|
|
||||||
@@ -119,14 +119,14 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<string> extensions = [];
|
List<string> extensions = [];
|
||||||
var extPtr = (IntPtr*)nativeGraphicsInterop.VkRequiredExtensions;
|
var extPtr = (nint*)nativeGraphicsInterop.VkRequiredExtensions;
|
||||||
for (int i = 0; i < nativeGraphicsInterop.VkRequiredExtensionsCount; i++)
|
for (int i = 0; i < nativeGraphicsInterop.VkRequiredExtensionsCount; i++)
|
||||||
{
|
{
|
||||||
var ptr = extPtr[i];
|
var ptr = extPtr[i];
|
||||||
extensions.Add(Marshal.PtrToStringAnsi(ptr) ?? string.Empty);
|
extensions.Add(Marshal.PtrToStringAnsi(ptr) ?? string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateSurface? createSurfaceFunc = nativeGraphicsInterop.VkCreateSurface == IntPtr.Zero ? default : Marshal.GetDelegateForFunctionPointer<CreateSurface>(nativeGraphicsInterop.VkCreateSurface);
|
CreateSurface? createSurfaceFunc = nativeGraphicsInterop.VkCreateSurface == nint.Zero ? default : Marshal.GetDelegateForFunctionPointer<CreateSurface>(nativeGraphicsInterop.VkCreateSurface);
|
||||||
|
|
||||||
return InitializeGraphicsRenderer(graphicsBackend, createSurfaceFunc, extensions.ToArray());
|
return InitializeGraphicsRenderer(graphicsBackend, createSurfaceFunc, extensions.ToArray());
|
||||||
}
|
}
|
||||||
@@ -155,13 +155,13 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "graphics_renderer_set_swap_buffer_callback")]
|
[UnmanagedCallersOnly(EntryPoint = "graphics_renderer_set_swap_buffer_callback")]
|
||||||
public static void SetSwapBuffersCallbackNative(IntPtr swapBuffersCallback)
|
public static void SetSwapBuffersCallbackNative(nint swapBuffersCallback)
|
||||||
{
|
{
|
||||||
_swapBuffersCallback = Marshal.GetDelegateForFunctionPointer<SwapBuffersCallback>(swapBuffersCallback);
|
_swapBuffersCallback = Marshal.GetDelegateForFunctionPointer<SwapBuffersCallback>(swapBuffersCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "get_game_info")]
|
[UnmanagedCallersOnly(EntryPoint = "get_game_info")]
|
||||||
public static GameInfoNative GetGameInfoNative(int descriptor, IntPtr extensionPtr)
|
public static GameInfoNative GetGameInfoNative(int descriptor, nint extensionPtr)
|
||||||
{
|
{
|
||||||
var extension = Marshal.PtrToStringAnsi(extensionPtr);
|
var extension = Marshal.PtrToStringAnsi(extensionPtr);
|
||||||
var stream = OpenFile(descriptor);
|
var stream = OpenFile(descriptor);
|
||||||
@@ -232,7 +232,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "input_connect_gamepad")]
|
[UnmanagedCallersOnly(EntryPoint = "input_connect_gamepad")]
|
||||||
public static IntPtr ConnectGamepadNative(int index)
|
public static nint ConnectGamepadNative(int index)
|
||||||
{
|
{
|
||||||
return ConnectGamepad(index);
|
return ConnectGamepad(index);
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_get_dlc_content_list")]
|
[UnmanagedCallersOnly(EntryPoint = "device_get_dlc_content_list")]
|
||||||
public static IntPtr GetDlcContentListNative(IntPtr pathPtr, long titleId)
|
public static nint GetDlcContentListNative(nint pathPtr, long titleId)
|
||||||
{
|
{
|
||||||
var list = GetDlcContentList(Marshal.PtrToStringAnsi(pathPtr) ?? "", (ulong)titleId);
|
var list = GetDlcContentList(Marshal.PtrToStringAnsi(pathPtr) ?? "", (ulong)titleId);
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_get_dlc_title_id")]
|
[UnmanagedCallersOnly(EntryPoint = "device_get_dlc_title_id")]
|
||||||
public static long GetDlcTitleIdNative(IntPtr pathPtr, IntPtr ncaPath)
|
public static long GetDlcTitleIdNative(nint pathPtr, nint ncaPath)
|
||||||
{
|
{
|
||||||
return Marshal.StringToHGlobalAnsi(GetDlcTitleId(Marshal.PtrToStringAnsi(pathPtr) ?? "", Marshal.PtrToStringAnsi(ncaPath) ?? ""));
|
return Marshal.StringToHGlobalAnsi(GetDlcTitleId(Marshal.PtrToStringAnsi(pathPtr) ?? "", Marshal.PtrToStringAnsi(ncaPath) ?? ""));
|
||||||
}
|
}
|
||||||
@@ -319,11 +319,11 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_verify_firmware")]
|
[UnmanagedCallersOnly(EntryPoint = "device_verify_firmware")]
|
||||||
public static IntPtr VerifyFirmwareNative(int descriptor, bool isXci)
|
public static nint VerifyFirmwareNative(int descriptor, bool isXci)
|
||||||
{
|
{
|
||||||
var stream = OpenFile(descriptor);
|
var stream = OpenFile(descriptor);
|
||||||
|
|
||||||
IntPtr stringHandle = 0;
|
nint stringHandle = 0;
|
||||||
string? version = "0.0";
|
string? version = "0.0";
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -356,7 +356,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "device_get_game_info")]
|
[UnmanagedCallersOnly(EntryPoint = "device_get_game_info")]
|
||||||
public unsafe static void GetGameInfoNative(int fileDescriptor, IntPtr extension, IntPtr infoPtr)
|
public unsafe static void GetGameInfoNative(int fileDescriptor, nint extension, nint infoPtr)
|
||||||
{
|
{
|
||||||
using var stream = OpenFile(fileDescriptor);
|
using var stream = OpenFile(fileDescriptor);
|
||||||
var ext = Marshal.PtrToStringAnsi(extension);
|
var ext = Marshal.PtrToStringAnsi(extension);
|
||||||
@@ -373,7 +373,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_get_opened_user")]
|
[UnmanagedCallersOnly(EntryPoint = "user_get_opened_user")]
|
||||||
public static IntPtr GetOpenedUserNative()
|
public static nint GetOpenedUserNative()
|
||||||
{
|
{
|
||||||
var userId = GetOpenedUser();
|
var userId = GetOpenedUser();
|
||||||
var ptr = Marshal.StringToHGlobalAnsi(userId);
|
var ptr = Marshal.StringToHGlobalAnsi(userId);
|
||||||
@@ -382,7 +382,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_get_user_picture")]
|
[UnmanagedCallersOnly(EntryPoint = "user_get_user_picture")]
|
||||||
public static IntPtr GetUserPictureNative(IntPtr userIdPtr)
|
public static nint GetUserPictureNative(nint userIdPtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_set_user_picture")]
|
[UnmanagedCallersOnly(EntryPoint = "user_set_user_picture")]
|
||||||
public static void SetUserPictureNative(IntPtr userIdPtr, IntPtr picturePtr)
|
public static void SetUserPictureNative(nint userIdPtr, nint picturePtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
var picture = Marshal.PtrToStringAnsi(picturePtr) ?? "";
|
var picture = Marshal.PtrToStringAnsi(picturePtr) ?? "";
|
||||||
@@ -399,7 +399,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_get_user_name")]
|
[UnmanagedCallersOnly(EntryPoint = "user_get_user_name")]
|
||||||
public static IntPtr GetUserNameNative(IntPtr userIdPtr)
|
public static nint GetUserNameNative(nint userIdPtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
|
|
||||||
@@ -407,7 +407,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_set_user_name")]
|
[UnmanagedCallersOnly(EntryPoint = "user_set_user_name")]
|
||||||
public static void SetUserNameNative(IntPtr userIdPtr, IntPtr userNamePtr)
|
public static void SetUserNameNative(nint userIdPtr, nint userNamePtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
||||||
@@ -416,7 +416,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_get_all_users")]
|
[UnmanagedCallersOnly(EntryPoint = "user_get_all_users")]
|
||||||
public static IntPtr GetAllUsersNative()
|
public static nint GetAllUsersNative()
|
||||||
{
|
{
|
||||||
var users = GetAllUsers();
|
var users = GetAllUsers();
|
||||||
|
|
||||||
@@ -424,7 +424,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_add_user")]
|
[UnmanagedCallersOnly(EntryPoint = "user_add_user")]
|
||||||
public static void AddUserNative(IntPtr userNamePtr, IntPtr picturePtr)
|
public static void AddUserNative(nint userNamePtr, nint picturePtr)
|
||||||
{
|
{
|
||||||
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
var userName = Marshal.PtrToStringAnsi(userNamePtr) ?? "";
|
||||||
var picture = Marshal.PtrToStringAnsi(picturePtr) ?? "";
|
var picture = Marshal.PtrToStringAnsi(picturePtr) ?? "";
|
||||||
@@ -433,7 +433,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_delete_user")]
|
[UnmanagedCallersOnly(EntryPoint = "user_delete_user")]
|
||||||
public static void DeleteUserNative(IntPtr userIdPtr)
|
public static void DeleteUserNative(nint userIdPtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
|
|
||||||
@@ -441,7 +441,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_open_user")]
|
[UnmanagedCallersOnly(EntryPoint = "user_open_user")]
|
||||||
public static void OpenUserNative(IntPtr userIdPtr)
|
public static void OpenUserNative(nint userIdPtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
|
|
||||||
@@ -449,7 +449,7 @@ namespace LibKenjinx
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "user_close_user")]
|
[UnmanagedCallersOnly(EntryPoint = "user_close_user")]
|
||||||
public static void CloseUserNative(IntPtr userIdPtr)
|
public static void CloseUserNative(nint userIdPtr)
|
||||||
{
|
{
|
||||||
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
var userId = Marshal.PtrToStringAnsi(userIdPtr) ?? "";
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ namespace LibKenjinx
|
|||||||
{
|
{
|
||||||
public static partial class LibKenjinx
|
public static partial class LibKenjinx
|
||||||
{
|
{
|
||||||
private unsafe static IntPtr CreateStringArray(List<string> strings)
|
private unsafe static nint CreateStringArray(List<string> strings)
|
||||||
{
|
{
|
||||||
uint size = (uint)(Marshal.SizeOf<IntPtr>() * (strings.Count + 1));
|
uint size = (uint)(Marshal.SizeOf<nint>() * (strings.Count + 1));
|
||||||
var array = (char**)Marshal.AllocHGlobal((int)size);
|
var array = (char**)Marshal.AllocHGlobal((int)size);
|
||||||
Unsafe.InitBlockUnaligned(array, 0, size);
|
Unsafe.InitBlockUnaligned(array, 0, size);
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ namespace LibKenjinx.Shared
|
|||||||
{
|
{
|
||||||
public class OpenTKBindingsContext : IBindingsContext
|
public class OpenTKBindingsContext : IBindingsContext
|
||||||
{
|
{
|
||||||
private readonly Func<string, IntPtr> _getProcAddress;
|
private readonly Func<string, nint> _getProcAddress;
|
||||||
|
|
||||||
public OpenTKBindingsContext(Func<string, IntPtr> getProcAddress)
|
public OpenTKBindingsContext(Func<string, nint> getProcAddress)
|
||||||
{
|
{
|
||||||
_getProcAddress = getProcAddress;
|
_getProcAddress = getProcAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IntPtr GetProcAddress(string procName)
|
public nint GetProcAddress(string procName)
|
||||||
{
|
{
|
||||||
return _getProcAddress(procName);
|
return _getProcAddress(procName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,27 +8,27 @@ namespace LibKenjinx
|
|||||||
{
|
{
|
||||||
public class VulkanLoader : IDisposable
|
public class VulkanLoader : IDisposable
|
||||||
{
|
{
|
||||||
private delegate IntPtr GetInstanceProcAddress(IntPtr instance, IntPtr name);
|
private delegate nint GetInstanceProcAddress(nint instance, nint name);
|
||||||
private delegate IntPtr GetDeviceProcAddress(IntPtr device, IntPtr name);
|
private delegate nint GetDeviceProcAddress(nint device, nint name);
|
||||||
|
|
||||||
private IntPtr _loadedLibrary = IntPtr.Zero;
|
private nint _loadedLibrary = nint.Zero;
|
||||||
private GetInstanceProcAddress _getInstanceProcAddr;
|
private GetInstanceProcAddress _getInstanceProcAddr;
|
||||||
private GetDeviceProcAddress _getDeviceProcAddr;
|
private GetDeviceProcAddress _getDeviceProcAddr;
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
if (_loadedLibrary != IntPtr.Zero)
|
if (_loadedLibrary != nint.Zero)
|
||||||
{
|
{
|
||||||
NativeLibrary.Free(_loadedLibrary);
|
NativeLibrary.Free(_loadedLibrary);
|
||||||
_loadedLibrary = IntPtr.Zero;
|
_loadedLibrary = nint.Zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public VulkanLoader(IntPtr driver)
|
public VulkanLoader(nint driver)
|
||||||
{
|
{
|
||||||
_loadedLibrary = driver;
|
_loadedLibrary = driver;
|
||||||
|
|
||||||
if (_loadedLibrary != IntPtr.Zero)
|
if (_loadedLibrary != nint.Zero)
|
||||||
{
|
{
|
||||||
var instanceGetProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetInstanceProcAddr");
|
var instanceGetProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetInstanceProcAddr");
|
||||||
var deviceProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetDeviceProcAddr");
|
var deviceProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetDeviceProcAddr");
|
||||||
@@ -41,7 +41,7 @@ namespace LibKenjinx
|
|||||||
public unsafe Vk GetApi()
|
public unsafe Vk GetApi()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (_loadedLibrary == IntPtr.Zero)
|
if (_loadedLibrary == nint.Zero)
|
||||||
{
|
{
|
||||||
return Vk.GetApi();
|
return Vk.GetApi();
|
||||||
}
|
}
|
||||||
@@ -60,12 +60,12 @@ namespace LibKenjinx
|
|||||||
|
|
||||||
if (ptr == default)
|
if (ptr == default)
|
||||||
{
|
{
|
||||||
ptr = _getInstanceProcAddr(IntPtr.Zero, xPtr);
|
ptr = _getInstanceProcAddr(nint.Zero, xPtr);
|
||||||
|
|
||||||
if (ptr == default)
|
if (ptr == default)
|
||||||
{
|
{
|
||||||
var currentDevice = ret.CurrentDevice.GetValueOrDefault().Handle;
|
var currentDevice = ret.CurrentDevice.GetValueOrDefault().Handle;
|
||||||
if (currentDevice != IntPtr.Zero)
|
if (currentDevice != nint.Zero)
|
||||||
{
|
{
|
||||||
ptr = _getDeviceProcAddr(currentDevice, xPtr);
|
ptr = _getDeviceProcAddr(currentDevice, xPtr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace Ryujinx.Cpu.Jit
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool UsesPrivateAllocations => false;
|
public bool UsesPrivateAllocations => false;
|
||||||
|
|
||||||
public IntPtr PageTablePointer => _addressSpace.Pointer;
|
public nint PageTablePointer => _addressSpace.Pointer;
|
||||||
|
|
||||||
public MemoryManagerType Type => _unsafeMode ? MemoryManagerType.HostMappedUnsafe : MemoryManagerType.HostMapped;
|
public MemoryManagerType Type => _unsafeMode ? MemoryManagerType.HostMappedUnsafe : MemoryManagerType.HostMapped;
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ namespace Ryujinx.Cpu.Jit
|
|||||||
for (int i = 0; i < regions.Length; i++)
|
for (int i = 0; i < regions.Length; i++)
|
||||||
{
|
{
|
||||||
var guestRegion = guestRegions[i];
|
var guestRegion = guestRegions[i];
|
||||||
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||||
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool UsesPrivateAllocations => false;
|
public bool UsesPrivateAllocations => false;
|
||||||
|
|
||||||
public IntPtr PageTablePointer => IntPtr.Zero;
|
public nint PageTablePointer => nint.Zero;
|
||||||
|
|
||||||
public ulong ReservedSize => (ulong)_addressSpace.Pointer.ToInt64();
|
public ulong ReservedSize => (ulong)_addressSpace.Pointer.ToInt64();
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
for (int i = 0; i < regions.Length; i++)
|
for (int i = 0; i < regions.Length; i++)
|
||||||
{
|
{
|
||||||
var guestRegion = guestRegions[i];
|
var guestRegion = guestRegions[i];
|
||||||
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||||
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private delegate void ThreadStart(IntPtr nativeContextPtr);
|
private delegate void ThreadStart(nint nativeContextPtr);
|
||||||
private delegate IntPtr GetTpidrEl0();
|
private delegate nint GetTpidrEl0();
|
||||||
private static MemoryBlock _codeBlock;
|
private static MemoryBlock _codeBlock;
|
||||||
private static ThreadStart _threadStart;
|
private static ThreadStart _threadStart;
|
||||||
private static GetTpidrEl0 _getTpidrEl0;
|
private static GetTpidrEl0 _getTpidrEl0;
|
||||||
@@ -80,7 +80,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
MemoryBlock codeBlock = null;
|
MemoryBlock codeBlock = null;
|
||||||
|
|
||||||
NativeSignalHandler.InitializeSignalHandler((IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr) =>
|
NativeSignalHandler.InitializeSignalHandler((nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr) =>
|
||||||
{
|
{
|
||||||
uint[] ehWrapperCode = NcePatcher.GenerateWrapperExceptionHandler(oldSignalHandlerSegfaultPtr, signalHandlerPtr);
|
uint[] ehWrapperCode = NcePatcher.GenerateWrapperExceptionHandler(oldSignalHandlerSegfaultPtr, signalHandlerPtr);
|
||||||
ulong ehWrapperCodeOffset = codeWriter.Write(ehWrapperCode);
|
ulong ehWrapperCodeOffset = codeWriter.Write(ehWrapperCode);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
private readonly NceNativeContext _context;
|
private readonly NceNativeContext _context;
|
||||||
private readonly ExceptionCallbacks _exceptionCallbacks;
|
private readonly ExceptionCallbacks _exceptionCallbacks;
|
||||||
|
|
||||||
internal IntPtr NativeContextPtr => _context.BasePtr;
|
internal nint NativeContextPtr => _context.BasePtr;
|
||||||
|
|
||||||
public ulong Pc => 0UL;
|
public ulong Pc => 0UL;
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
public NceExecutionContext(ExceptionCallbacks exceptionCallbacks)
|
public NceExecutionContext(ExceptionCallbacks exceptionCallbacks)
|
||||||
{
|
{
|
||||||
_svcHandler = OnSupervisorCall;
|
_svcHandler = OnSupervisorCall;
|
||||||
IntPtr svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
|
nint svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
|
||||||
|
|
||||||
_context = new NceNativeContext();
|
_context = new NceNativeContext();
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
public void Exit()
|
public void Exit()
|
||||||
{
|
{
|
||||||
_context.GetStorage().HostThreadHandle = IntPtr.Zero;
|
_context.GetStorage().HostThreadHandle = nint.Zero;
|
||||||
|
|
||||||
UnregisterAlternateStack();
|
UnregisterAlternateStack();
|
||||||
}
|
}
|
||||||
@@ -143,8 +143,8 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
public void RequestInterrupt()
|
public void RequestInterrupt()
|
||||||
{
|
{
|
||||||
IntPtr threadHandle = _context.GetStorage().HostThreadHandle;
|
nint threadHandle = _context.GetStorage().HostThreadHandle;
|
||||||
if (threadHandle != IntPtr.Zero)
|
if (threadHandle != nint.Zero)
|
||||||
{
|
{
|
||||||
// Bit 0 set means that the thread is currently running managed code.
|
// Bit 0 set means that the thread is currently running managed code.
|
||||||
// Bit 1 set means that an interrupt was requested for the thread.
|
// Bit 1 set means that an interrupt was requested for the thread.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
{
|
{
|
||||||
private readonly MemoryBlock _impl;
|
private readonly MemoryBlock _impl;
|
||||||
|
|
||||||
public IntPtr Pointer => _impl.Pointer;
|
public nint Pointer => _impl.Pointer;
|
||||||
|
|
||||||
public NceMemoryBlock(ulong size, MemoryAllocationFlags flags)
|
public NceMemoryBlock(ulong size, MemoryAllocationFlags flags)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,16 +20,16 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
public uint Fpsr;
|
public uint Fpsr;
|
||||||
public uint InManaged;
|
public uint InManaged;
|
||||||
public ulong HostSp;
|
public ulong HostSp;
|
||||||
public IntPtr HostThreadHandle;
|
public nint HostThreadHandle;
|
||||||
public ulong TempStorage;
|
public ulong TempStorage;
|
||||||
public IntPtr SvcCallHandler;
|
public nint SvcCallHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NativeCtxStorage _dummyStorage = new();
|
private static NativeCtxStorage _dummyStorage = new();
|
||||||
|
|
||||||
private readonly MemoryBlock _block;
|
private readonly MemoryBlock _block;
|
||||||
|
|
||||||
public IntPtr BasePtr => _block.Pointer;
|
public nint BasePtr => _block.Pointer;
|
||||||
|
|
||||||
public NceNativeContext()
|
public NceNativeContext()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
private delegate bool SuspendThreadHandlerDelegate();
|
private delegate bool SuspendThreadHandlerDelegate();
|
||||||
private static GetTickCounterDelegate _getTickCounter;
|
private static GetTickCounterDelegate _getTickCounter;
|
||||||
private static SuspendThreadHandlerDelegate _suspendThreadHandler;
|
private static SuspendThreadHandlerDelegate _suspendThreadHandler;
|
||||||
private static IntPtr _getTickCounterPtr;
|
private static nint _getTickCounterPtr;
|
||||||
private static IntPtr _suspendThreadHandlerPtr;
|
private static nint _suspendThreadHandlerPtr;
|
||||||
|
|
||||||
[ThreadStatic]
|
[ThreadStatic]
|
||||||
private static NceExecutionContext _context;
|
private static NceExecutionContext _context;
|
||||||
@@ -42,12 +42,12 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
return _context.OnInterrupt();
|
return _context.OnInterrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IntPtr GetTickCounterAccessFunctionPointer()
|
public static nint GetTickCounterAccessFunctionPointer()
|
||||||
{
|
{
|
||||||
return _getTickCounterPtr;
|
return _getTickCounterPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IntPtr GetSuspendThreadHandlerFunctionPointer()
|
public static nint GetSuspendThreadHandlerFunctionPointer()
|
||||||
{
|
{
|
||||||
return _suspendThreadHandlerPtr;
|
return _suspendThreadHandlerPtr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -425,7 +425,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
return asm.GetCode();
|
return asm.GetCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static uint[] GenerateWrapperExceptionHandler(IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr)
|
internal static uint[] GenerateWrapperExceptionHandler(nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr)
|
||||||
{
|
{
|
||||||
Assembler asm = new();
|
Assembler asm = new();
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
public static int UnixSuspendSignal => OperatingSystem.IsMacOS() ? SigUsr2MacOS : SigUsr2Linux;
|
public static int UnixSuspendSignal => OperatingSystem.IsMacOS() ? SigUsr2MacOS : SigUsr2Linux;
|
||||||
|
|
||||||
public static IntPtr GetCurrentThreadHandle()
|
public static nint GetCurrentThreadHandle()
|
||||||
{
|
{
|
||||||
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic)
|
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic)
|
||||||
{
|
{
|
||||||
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SuspendThread(IntPtr handle)
|
public static void SuspendThread(nint handle)
|
||||||
{
|
{
|
||||||
if (PlatformInfo.IsBionic)
|
if (PlatformInfo.IsBionic)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
static class NceThreadPalAndroid
|
static class NceThreadPalAndroid
|
||||||
{
|
{
|
||||||
[DllImport("libc", SetLastError = true)]
|
[DllImport("libc", SetLastError = true)]
|
||||||
private static extern int pthread_kill(IntPtr thread, int sig);
|
private static extern int pthread_kill(nint thread, int sig);
|
||||||
|
|
||||||
public static void SuspendThread(IntPtr handle)
|
public static void SuspendThread(nint handle)
|
||||||
{
|
{
|
||||||
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
||||||
if (result != 0)
|
if (result != 0)
|
||||||
|
|||||||
@@ -6,26 +6,26 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
static class NceThreadPalUnix
|
static class NceThreadPalUnix
|
||||||
{
|
{
|
||||||
[DllImport("libc", SetLastError = true)]
|
[DllImport("libc", SetLastError = true)]
|
||||||
private static extern IntPtr pthread_self();
|
private static extern nint pthread_self();
|
||||||
|
|
||||||
[DllImport("libc", SetLastError = true)]
|
[DllImport("libc", SetLastError = true)]
|
||||||
private static extern int pthread_threadid_np(IntPtr arg0, out ulong tid);
|
private static extern int pthread_threadid_np(nint arg0, out ulong tid);
|
||||||
|
|
||||||
[DllImport("libpthread", SetLastError = true)]
|
[DllImport("libpthread", SetLastError = true)]
|
||||||
private static extern int pthread_kill(IntPtr thread, int sig);
|
private static extern int pthread_kill(nint thread, int sig);
|
||||||
|
|
||||||
public static IntPtr GetCurrentThreadHandle()
|
public static nint GetCurrentThreadHandle()
|
||||||
{
|
{
|
||||||
return pthread_self();
|
return pthread_self();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ulong GetCurrentThreadId()
|
public static ulong GetCurrentThreadId()
|
||||||
{
|
{
|
||||||
pthread_threadid_np(IntPtr.Zero, out ulong tid);
|
pthread_threadid_np(nint.Zero, out ulong tid);
|
||||||
return tid;
|
return tid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SuspendThread(IntPtr handle)
|
public static void SuspendThread(nint handle)
|
||||||
{
|
{
|
||||||
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
||||||
if (result != 0)
|
if (result != 0)
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
private struct Entry
|
private struct Entry
|
||||||
{
|
{
|
||||||
public IntPtr ThreadId;
|
public nint ThreadId;
|
||||||
public IntPtr NativeContextPtr;
|
public nint NativeContextPtr;
|
||||||
|
|
||||||
public Entry(IntPtr threadId, IntPtr nativeContextPtr)
|
public Entry(nint threadId, nint nativeContextPtr)
|
||||||
{
|
{
|
||||||
ThreadId = threadId;
|
ThreadId = threadId;
|
||||||
NativeContextPtr = nativeContextPtr;
|
NativeContextPtr = nativeContextPtr;
|
||||||
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
private static MemoryBlock _block;
|
private static MemoryBlock _block;
|
||||||
|
|
||||||
public static IntPtr EntriesPointer => _block.Pointer + 8;
|
public static nint EntriesPointer => _block.Pointer + 8;
|
||||||
|
|
||||||
static NceThreadTable()
|
static NceThreadTable()
|
||||||
{
|
{
|
||||||
@@ -30,7 +30,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
_block.Write(0UL, 0UL);
|
_block.Write(0UL, 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int Register(IntPtr threadId, IntPtr nativeContextPtr)
|
public static int Register(nint threadId, nint nativeContextPtr)
|
||||||
{
|
{
|
||||||
Span<Entry> entries = GetStorage();
|
Span<Entry> entries = GetStorage();
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
for (int i = 0; i < MaxThreads; i++)
|
for (int i = 0; i < MaxThreads; i++)
|
||||||
{
|
{
|
||||||
if (entries[i].ThreadId == IntPtr.Zero)
|
if (entries[i].ThreadId == nint.Zero)
|
||||||
{
|
{
|
||||||
entries[i] = new Entry(threadId, nativeContextPtr);
|
entries[i] = new Entry(threadId, nativeContextPtr);
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
lock (_block)
|
lock (_block)
|
||||||
{
|
{
|
||||||
if (entries[tableIndex].ThreadId != IntPtr.Zero)
|
if (entries[tableIndex].ThreadId != nint.Zero)
|
||||||
{
|
{
|
||||||
entries[tableIndex] = default;
|
entries[tableIndex] = default;
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ namespace Ryujinx.Cpu.Nce
|
|||||||
|
|
||||||
for (int i = (int)currentThreadCount - 1; i >= 0; i--)
|
for (int i = (int)currentThreadCount - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (entries[i].ThreadId != IntPtr.Zero)
|
if (entries[i].ThreadId != nint.Zero)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void InstallUnixAlternateStackForCurrentThread(IntPtr stackPtr, ulong stackSize)
|
public static void InstallUnixAlternateStackForCurrentThread(nint stackPtr, ulong stackSize)
|
||||||
{
|
{
|
||||||
UnixSignalHandlerRegistration.RegisterAlternateStack(stackPtr, stackSize);
|
UnixSignalHandlerRegistration.RegisterAlternateStack(stackPtr, stackSize);
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
UnixSignalHandlerRegistration.UnregisterAlternateStack();
|
UnixSignalHandlerRegistration.UnregisterAlternateStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void InstallUnixSignalHandler(int sigNum, IntPtr action)
|
public static void InstallUnixSignalHandler(int sigNum, nint action)
|
||||||
{
|
{
|
||||||
UnixSignalHandlerRegistration.RegisterExceptionHandler(sigNum, action);
|
UnixSignalHandlerRegistration.RegisterExceptionHandler(sigNum, action);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,17 +28,17 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
public struct SigActionBionic
|
public struct SigActionBionic
|
||||||
{
|
{
|
||||||
public int sa_flags;
|
public int sa_flags;
|
||||||
public IntPtr sa_handler;
|
public nint sa_handler;
|
||||||
public SigSet sa_mask;
|
public SigSet sa_mask;
|
||||||
public IntPtr sa_restorer;
|
public nint sa_restorer;
|
||||||
}
|
}
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 8)]
|
[StructLayout(LayoutKind.Sequential, Pack = 8)]
|
||||||
public struct Stack
|
public struct Stack
|
||||||
{
|
{
|
||||||
public IntPtr ss_sp;
|
public nint ss_sp;
|
||||||
public int ss_flags;
|
public int ss_flags;
|
||||||
public IntPtr ss_size;
|
public nint ss_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
private const int SIGSEGV = 11;
|
private const int SIGSEGV = 11;
|
||||||
@@ -58,7 +58,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
private static partial int sigaction(int signum, nint sigAction, out SigAction oldAction);
|
private static partial int sigaction(int signum, nint sigAction, out SigAction oldAction);
|
||||||
|
|
||||||
[SupportedOSPlatform("android"), LibraryImport("libc", SetLastError = true)]
|
[SupportedOSPlatform("android"), LibraryImport("libc", SetLastError = true)]
|
||||||
private static partial int sigaction(int signum, IntPtr sigAction, out SigActionBionic oldAction);
|
private static partial int sigaction(int signum, nint sigAction, out SigActionBionic oldAction);
|
||||||
|
|
||||||
[LibraryImport("libc", SetLastError = true)]
|
[LibraryImport("libc", SetLastError = true)]
|
||||||
private static partial int sigemptyset(ref SigSet set);
|
private static partial int sigemptyset(ref SigSet set);
|
||||||
@@ -152,13 +152,13 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterAlternateStack(IntPtr stackPtr, ulong stackSize)
|
public static void RegisterAlternateStack(nint stackPtr, ulong stackSize)
|
||||||
{
|
{
|
||||||
Stack stack = new()
|
Stack stack = new()
|
||||||
{
|
{
|
||||||
ss_sp = stackPtr,
|
ss_sp = stackPtr,
|
||||||
ss_flags = SS_AUTODISARM,
|
ss_flags = SS_AUTODISARM,
|
||||||
ss_size = (IntPtr)stackSize
|
ss_size = (nint)stackSize
|
||||||
};
|
};
|
||||||
|
|
||||||
int result = sigaltstack(ref stack, out _);
|
int result = sigaltstack(ref stack, out _);
|
||||||
@@ -184,7 +184,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterExceptionHandler(int sigNum, IntPtr action)
|
public static void RegisterExceptionHandler(int sigNum, nint action)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
|
|
||||||
result = sigaction(sigNum, ref sig, out SigActionBionic oldu);
|
result = sigaction(sigNum, ref sig, out SigActionBionic oldu);
|
||||||
|
|
||||||
if (oldu.sa_handler != IntPtr.Zero)
|
if (oldu.sa_handler != nint.Zero)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ namespace Ryujinx.Cpu.Signal
|
|||||||
|
|
||||||
result = sigaction(sigNum, ref sig, out SigAction oldu);
|
result = sigaction(sigNum, ref sig, out SigAction oldu);
|
||||||
|
|
||||||
if (oldu.sa_handler != IntPtr.Zero)
|
if (oldu.sa_handler != nint.Zero)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ namespace Ryujinx.Memory
|
|||||||
|
|
||||||
fixed (byte* pMemName = memName)
|
fixed (byte* pMemName = memName)
|
||||||
{
|
{
|
||||||
fd = ASharedMemory_create((IntPtr)pMemName, (nuint)size);
|
fd = ASharedMemory_create((nint)pMemName, (nuint)size);
|
||||||
if (fd <= 0)
|
if (fd <= 0)
|
||||||
{
|
{
|
||||||
throw new OutOfMemoryException();
|
throw new OutOfMemoryException();
|
||||||
@@ -173,7 +173,7 @@ namespace Ryujinx.Memory
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ASharedMemory_create handle ftruncate for us.
|
// ASharedMemory_create handle ftruncate for us.
|
||||||
return (IntPtr)fd;
|
return (nint)fd;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace Ryujinx.Memory
|
|||||||
public static partial int shm_unlink(nint name);
|
public static partial int shm_unlink(nint name);
|
||||||
|
|
||||||
[DllImport("android")]
|
[DllImport("android")]
|
||||||
internal static extern int ASharedMemory_create(IntPtr name, nuint size);
|
internal static extern int ASharedMemory_create(nint name, nuint size);
|
||||||
|
|
||||||
private static int MmapFlagsToSystemFlags(MmapFlags flags)
|
private static int MmapFlagsToSystemFlags(MmapFlags flags)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user