aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
diff options
context:
space:
mode:
authorAndrey Sukharev <SukharevAndrey@users.noreply.github.com>2023-03-22 01:41:19 +0300
committerGitHub <noreply@github.com>2023-03-21 19:41:19 -0300
commit4ce4299ca2a6b11332f2341c69f40efd7205282f (patch)
tree595805d7b0288157c9e4e6598ce89de39e16b76c /Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
parent17620d18db8d4a67e4b917596c760107d26fadc5 (diff)
Use source generated json serializers in order to improve code trimming (#4094)
* Use source generated json serializers in order to improve code trimming * Use strongly typed github releases model to fetch updates instead of raw Newtonsoft.Json parsing * Use separate model for LogEventArgs serialization * Make dynamic object formatter static. Fix string builder pooling. * Do not inherit json version of LogEventArgs from EventArgs * Fix extra space in object formatting * Write log json directly to stream instead of using buffer writer * Rebase fixes * Rebase fixes * Rebase fixes * Enforce block-scoped namespaces in the solution. Convert style for existing code * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Rebase indent fix * Fix indent * Delete unnecessary json properties * Rebase fix * Remove overridden json property names as they are handled in the options * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Use default json options in github api calls * Indentation and spacing fixes --------- Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs')
-rw-r--r--Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs13
1 files changed, 8 insertions, 5 deletions
diff --git a/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs b/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
index 7223ad45..08bbcbf1 100644
--- a/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
+++ b/Ryujinx.Common/Configuration/Hid/JsonInputConfigConverter.cs
@@ -1,13 +1,16 @@
using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Configuration.Hid.Keyboard;
+using Ryujinx.Common.Utilities;
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Ryujinx.Common.Configuration.Hid
{
- class JsonInputConfigConverter : JsonConverter<InputConfig>
+ public class JsonInputConfigConverter : JsonConverter<InputConfig>
{
+ private static readonly InputConfigJsonSerializerContext SerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
+
private static InputBackendType GetInputBackendType(ref Utf8JsonReader reader)
{
// Temporary reader to get the backend type
@@ -54,8 +57,8 @@ namespace Ryujinx.Common.Configuration.Hid
return backendType switch
{
- InputBackendType.WindowKeyboard => (InputConfig)JsonSerializer.Deserialize(ref reader, typeof(StandardKeyboardInputConfig), options),
- InputBackendType.GamepadSDL2 => (InputConfig)JsonSerializer.Deserialize(ref reader, typeof(StandardControllerInputConfig), options),
+ InputBackendType.WindowKeyboard => JsonSerializer.Deserialize(ref reader, SerializerContext.StandardKeyboardInputConfig),
+ InputBackendType.GamepadSDL2 => JsonSerializer.Deserialize(ref reader, SerializerContext.StandardControllerInputConfig),
_ => throw new InvalidOperationException($"Unknown backend type {backendType}"),
};
}
@@ -65,10 +68,10 @@ namespace Ryujinx.Common.Configuration.Hid
switch (value.Backend)
{
case InputBackendType.WindowKeyboard:
- JsonSerializer.Serialize(writer, value as StandardKeyboardInputConfig, options);
+ JsonSerializer.Serialize(writer, value as StandardKeyboardInputConfig, SerializerContext.StandardKeyboardInputConfig);
break;
case InputBackendType.GamepadSDL2:
- JsonSerializer.Serialize(writer, value as StandardControllerInputConfig, options);
+ JsonSerializer.Serialize(writer, value as StandardControllerInputConfig, SerializerContext.StandardControllerInputConfig);
break;
default:
throw new ArgumentException($"Unknown backend type {value.Backend}");