|
@@ -41,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Applets
|
|
|
var keyboardConfig = _normalSession.Pop();
|
|
var keyboardConfig = _normalSession.Pop();
|
|
|
var transferMemory = _normalSession.Pop();
|
|
var transferMemory = _normalSession.Pop();
|
|
|
|
|
|
|
|
- _keyboardConfig = IApplet.ReadStruct<SoftwareKeyboardConfig>(keyboardConfig);
|
|
|
|
|
|
|
+ _keyboardConfig = ReadStruct<SoftwareKeyboardConfig>(keyboardConfig);
|
|
|
|
|
|
|
|
if (_keyboardConfig.UseUtf8)
|
|
if (_keyboardConfig.UseUtf8)
|
|
|
{
|
|
{
|
|
@@ -176,5 +176,20 @@ namespace Ryujinx.HLE.HOS.Applets
|
|
|
return stream.ToArray();
|
|
return stream.ToArray();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private static T ReadStruct<T>(byte[] data)
|
|
|
|
|
+ where T : struct
|
|
|
|
|
+ {
|
|
|
|
|
+ GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
|
|
|
|
|
+
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ return Marshal.PtrToStructure<T>(handle.AddrOfPinnedObject());
|
|
|
|
|
+ }
|
|
|
|
|
+ finally
|
|
|
|
|
+ {
|
|
|
|
|
+ handle.Free();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|