Support HomeBrew Loader (#577)
* Make it possibles to load hb-loader and hb-menu One issue remains with hb-menu homebrew icons because of SIMD issues (libjpeg-turbo related) and netloader doesn't work. * Implement GetApplicationControlData * Fix shared fonts for NSO/NRO * Add homebrew NRO romfs support This readd the NRO support by parsing the ASET header * Address comments about HomebrewRomFs * override Dispose in homebrew romfs stream * Use a struct for file timestamp * Simplify positional increments in GetApplicationControlData * Address comments * improve readability of the memory permission check in SetProcessMemoryPermission * Fix previous broken check * Add address space checks in SetProcessMemoryPermission
This commit is contained in:
parent
7e9f555574
commit
b126ea48c6
17 changed files with 633 additions and 17 deletions
|
@ -23,9 +23,10 @@ namespace Ryujinx.HLE.HOS.Services.Sm
|
|||
{
|
||||
_commands = new Dictionary<int, ServiceProcessRequest>
|
||||
{
|
||||
{ 0, Initialize },
|
||||
{ 1, GetService },
|
||||
{ 2, RegisterService }
|
||||
{ 0, Initialize },
|
||||
{ 1, GetService },
|
||||
{ 2, RegisterService },
|
||||
{ 3, UnregisterService }
|
||||
};
|
||||
|
||||
_registeredServices = new ConcurrentDictionary<string, KPort>();
|
||||
|
@ -128,6 +129,36 @@ namespace Ryujinx.HLE.HOS.Services.Sm
|
|||
return 0;
|
||||
}
|
||||
|
||||
public long UnregisterService(ServiceCtx context)
|
||||
{
|
||||
if (!_isInitialized)
|
||||
{
|
||||
return ErrorCode.MakeError(ErrorModule.Sm, SmErr.NotInitialized);
|
||||
}
|
||||
|
||||
long namePosition = context.RequestData.BaseStream.Position;
|
||||
|
||||
string name = ReadName(context);
|
||||
|
||||
context.RequestData.BaseStream.Seek(namePosition + 8, SeekOrigin.Begin);
|
||||
|
||||
bool isLight = (context.RequestData.ReadInt32() & 1) != 0;
|
||||
|
||||
int maxSessions = context.RequestData.ReadInt32();
|
||||
|
||||
if (name == string.Empty)
|
||||
{
|
||||
return ErrorCode.MakeError(ErrorModule.Sm, SmErr.InvalidName);
|
||||
}
|
||||
|
||||
if (!_registeredServices.TryRemove(name, out _))
|
||||
{
|
||||
return ErrorCode.MakeError(ErrorModule.Sm, SmErr.NotRegistered);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static string ReadName(ServiceCtx context)
|
||||
{
|
||||
string name = string.Empty;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue