forked from MeloNX/MeloNX
fix android bionic log
This commit is contained in:
parent
4d06f19fe7
commit
6828fe6270
@ -87,7 +87,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon", "src\Ryuj
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "src\Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7F55A45D-4E1D-4A36-ADD3-87F29A285AA2}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "src\Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7F55A45D-4E1D-4A36-ADD3-87F29A285AA2}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibRyujinx.Shared", "src\LibRyujinx\LibRyujinx.Shared.csproj", "{5BBF478C-A520-41E7-9B88-890AD26766B8}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibRyujinx.Shared", "src\LibRyujinx\LibRyujinx.csproj", "{5BBF478C-A520-41E7-9B88-890AD26766B8}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "src\Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{C75176EB-C44E-449A-8077-A48AD94534EE}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "src\Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{C75176EB-C44E-449A-8077-A48AD94534EE}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.Common.Logging.Formatters;
|
||||||
|
using Ryujinx.Common.Logging.Targets;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -10,6 +10,8 @@ using LibRyujinx.Jni;
|
|||||||
using Rxmxnx.PInvoke;
|
using Rxmxnx.PInvoke;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using LibRyujinx.Jni.Internal.Pointers;
|
using LibRyujinx.Jni.Internal.Pointers;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.Common.Logging.Targets;
|
||||||
using Silk.NET.Vulkan;
|
using Silk.NET.Vulkan;
|
||||||
using Silk.NET.Vulkan.Extensions.KHR;
|
using Silk.NET.Vulkan.Extensions.KHR;
|
||||||
|
|
||||||
@ -32,7 +34,16 @@ namespace LibRyujinx
|
|||||||
|
|
||||||
Ryujinx.Common.SystemInfo.SystemInfo.IsBionic = true;
|
Ryujinx.Common.SystemInfo.SystemInfo.IsBionic = true;
|
||||||
|
|
||||||
return Initialize(path);
|
var init = Initialize(path);
|
||||||
|
|
||||||
|
Logger.AddTarget(
|
||||||
|
new AsyncLogTargetWrapper(
|
||||||
|
new AndroidLogTarget("Ryujinx"),
|
||||||
|
1000,
|
||||||
|
AsyncLogTargetOverflowAction.Block
|
||||||
|
));
|
||||||
|
|
||||||
|
return init;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetString(JEnvRef jEnv, JStringLocalRef jString)
|
private static string GetString(JEnvRef jEnv, JStringLocalRef jString)
|
||||||
@ -54,6 +65,17 @@ namespace LibRyujinx
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static JStringLocalRef CreateString(in IReadOnlyFixedContext<Char> ctx, JEnvRef jEnv)
|
||||||
|
{
|
||||||
|
JEnvValue value = jEnv.Environment;
|
||||||
|
ref JNativeInterface jInterface = ref value.Functions;
|
||||||
|
|
||||||
|
IntPtr newStringPtr = jInterface.NewStringPointer;
|
||||||
|
NewStringDelegate newString = newStringPtr.GetUnsafeDelegate<NewStringDelegate>();
|
||||||
|
|
||||||
|
return newString(jEnv, ctx.Pointer, ctx.Values.Length);
|
||||||
|
}
|
||||||
|
|
||||||
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceInitialize")]
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_deviceInitialize")]
|
||||||
public static JBoolean JniInitializeDeviceNative(JEnvRef jEnv, JObjectLocalRef jObj, JBoolean isHostMapped)
|
public static JBoolean JniInitializeDeviceNative(JEnvRef jEnv, JObjectLocalRef jObj, JBoolean isHostMapped)
|
||||||
{
|
{
|
||||||
@ -204,6 +226,62 @@ namespace LibRyujinx
|
|||||||
{
|
{
|
||||||
_swapBuffersCallback = Marshal.GetDelegateForFunctionPointer<SwapBuffersCallback>(swapBuffersCallback);
|
_swapBuffersCallback = Marshal.GetDelegateForFunctionPointer<SwapBuffersCallback>(swapBuffersCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputInitialize")]
|
||||||
|
public static void JniInitializeInput(JEnvRef jEnv, JObjectLocalRef jObj, JInt width, JInt height)
|
||||||
|
{
|
||||||
|
InitializeInput(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputSetClientSize")]
|
||||||
|
public static void JniSetClientSize(JEnvRef jEnv, JObjectLocalRef jObj, JInt width, JInt height)
|
||||||
|
{
|
||||||
|
SetClientSize(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputSetTouchPoint")]
|
||||||
|
public static void JniSetTouchPoint(JEnvRef jEnv, JObjectLocalRef jObj, JInt x, JInt y)
|
||||||
|
{
|
||||||
|
SetTouchPoint(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputReleaseTouchPoint")]
|
||||||
|
public static void JniReleaseTouchPoint(JEnvRef jEnv, JObjectLocalRef jObj)
|
||||||
|
{
|
||||||
|
ReleaseTouchPoint();
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputUpdate")]
|
||||||
|
public static void JniUpdateInput(JEnvRef jEnv, JObjectLocalRef jObj)
|
||||||
|
{
|
||||||
|
UpdateInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputSetButtonPressed")]
|
||||||
|
public static void JniSetButtonPressed(JEnvRef jEnv, JObjectLocalRef jObj, JInt button, JStringLocalRef id)
|
||||||
|
{
|
||||||
|
SetButtonPressed((Ryujinx.Input.GamepadButtonInputId)(int)button, GetString(jEnv, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputSetButtonReleased")]
|
||||||
|
public static void JniSetButtonReleased(JEnvRef jEnv, JObjectLocalRef jObj, JInt button, JStringLocalRef id)
|
||||||
|
{
|
||||||
|
SetButtonReleased((Ryujinx.Input.GamepadButtonInputId)(int)button, GetString(jEnv, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputSetStickAxis")]
|
||||||
|
public static void JniSetStickAxis(JEnvRef jEnv, JObjectLocalRef jObj, JInt stick, JFloat x, JFloat y, JStringLocalRef id)
|
||||||
|
{
|
||||||
|
SetStickAxis((Ryujinx.Input.StickInputId)(int)stick, new System.Numerics.Vector2(x, y), GetString(jEnv, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnmanagedCallersOnly(EntryPoint = "Java_org_ryujinx_android_RyujinxNative_inputConnectGamepad")]
|
||||||
|
public static JStringLocalRef JniConnectGamepad(JEnvRef jEnv, JObjectLocalRef jObj, JInt index)
|
||||||
|
{
|
||||||
|
var id = ConnectGamepad(index);
|
||||||
|
|
||||||
|
return (id ?? "").AsSpan().WithSafeFixed(jEnv, CreateString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static partial class Logcat
|
internal static partial class Logcat
|
||||||
|
@ -41,12 +41,6 @@ namespace LibRyujinx
|
|||||||
|
|
||||||
ConfigurationState.Initialize();
|
ConfigurationState.Initialize();
|
||||||
LoggerModule.Initialize();
|
LoggerModule.Initialize();
|
||||||
Logger.AddTarget(
|
|
||||||
new AsyncLogTargetWrapper(
|
|
||||||
new AndroidLogTarget("Ryujinx"),
|
|
||||||
1000,
|
|
||||||
AsyncLogTargetOverflowAction.Block
|
|
||||||
));
|
|
||||||
|
|
||||||
SwitchDevice = new SwitchDevice();
|
SwitchDevice = new SwitchDevice();
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ using System.Text;
|
|||||||
|
|
||||||
namespace Ryujinx.Common.Logging.Formatters
|
namespace Ryujinx.Common.Logging.Formatters
|
||||||
{
|
{
|
||||||
internal class DefaultLogFormatter : ILogFormatter
|
public class DefaultLogFormatter : ILogFormatter
|
||||||
{
|
{
|
||||||
private static readonly ObjectPool<StringBuilder> _stringBuilderPool = SharedPools.Default<StringBuilder>();
|
private static readonly ObjectPool<StringBuilder> _stringBuilderPool = SharedPools.Default<StringBuilder>();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user