Config option to ignore missing services (#658)

* Implemented config option to ignore missing services

* Removed unused using statement

* Resolved comments from review
This commit is contained in:
BaronKiko 2019-04-16 00:22:55 +01:00 committed by jduncanator
parent 233fc95e1e
commit b2e88b04a8
6 changed files with 73 additions and 3 deletions

View file

@ -89,13 +89,29 @@ namespace Ryujinx.HLE.HOS.Services
long sfciMagic = context.RequestData.ReadInt64();
int commandId = (int)context.RequestData.ReadInt64();
if (service.Commands.TryGetValue(commandId, out ServiceProcessRequest processRequest))
bool serviceExists = service.Commands.TryGetValue(commandId, out ServiceProcessRequest processRequest);
if (ServiceConfiguration.IgnoreMissingServices || serviceExists)
{
long result = 0;
context.ResponseData.BaseStream.Seek(_isDomain ? 0x20 : 0x10, SeekOrigin.Begin);
Logger.PrintDebug(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Method.Name}");
if (serviceExists)
{
Logger.PrintDebug(LogClass.KernelIpc, $"{service.GetType().Name}: {processRequest.Method.Name}");
long result = processRequest(context);
result = processRequest(context);
}
else
{
string serviceName;
DummyService dummyService = service as DummyService;
serviceName = (dummyService == null) ? service.GetType().FullName : dummyService.ServiceName;
Logger.PrintWarning(LogClass.KernelIpc, $"Missing service {serviceName}: {commandId} ignored");
}
if (_isDomain)
{