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