From 0746b83edf49d1fd668dd337264e942f361b675c Mon Sep 17 00:00:00 2001 From: Mary <me@thog.eu> Date: Wed, 14 Apr 2021 00:01:24 +0200 Subject: Initial support for the new 12.x IPC system (#2182) * Rename CommandAttribute as CommandHIpcAttribute to prepare for 12.x changes * Implement inital support for TIPC and adds SM command ids * *Ipc to *ipc * Missed a ref in last commit... * CommandAttributeTIpc to CommandAttributeTipc * Addresses comment and fixes some bugs around TIPC doesn't have any padding requirements as buffer C isn't a thing Fix for RegisterService inverting two argument only on TIPC --- Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs') diff --git a/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs index 69493918..b15ff229 100644 --- a/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs +++ b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs @@ -18,24 +18,28 @@ namespace Ryujinx.HLE.Exceptions public ServiceCtx Context { get; } public IpcMessage Request { get; } - public ServiceNotImplementedException(IpcService service, ServiceCtx context) - : this(service, context, "The service call is not implemented.") + private bool _isTipcCommand; + + public ServiceNotImplementedException(IpcService service, ServiceCtx context, bool isTipcCommand) + : this(service, context, "The service call is not implemented.", isTipcCommand) { } - public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message) + public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, bool isTipcCommand) : base(message) { Service = service; Context = context; Request = context.Request; + _isTipcCommand = isTipcCommand; } - public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, Exception inner) + public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, Exception inner, bool isTipcCommand) : base(message, inner) { Service = service; Context = context; Request = context.Request; + _isTipcCommand = isTipcCommand; } protected ServiceNotImplementedException(SerializationInfo info, StreamingContext context) @@ -62,7 +66,7 @@ namespace Ryujinx.HLE.Exceptions if (callingType != null && callingMethod != null) { - var ipcCommands = Service.Commands; + var ipcCommands = _isTipcCommand ? Service.TipcCommands : Service.HipcCommands; // Find the handler for the method called var ipcHandler = ipcCommands.FirstOrDefault(x => x.Value == callingMethod); -- cgit v1.2.3-70-g09d2