Parcourir la source

headless: Add Ignore Controller Applet as a configurable option

Evan Husted il y a 1 an
Parent
commit
9c82d98ec4

+ 3 - 2
src/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs

@@ -117,8 +117,9 @@ namespace Ryujinx.Headless.SDL2.OpenGL
             GraphicsDebugLevel glLogLevel,
             AspectRatio aspectRatio,
             bool enableMouse,
-            HideCursorMode hideCursorMode)
-            : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode)
+            HideCursorMode hideCursorMode,
+            bool ignoreControllerApplet)
+            : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet)
         {
             _glLogLevel = glLogLevel;
         }

+ 3 - 0
src/Ryujinx.Headless.SDL2/Options.cs

@@ -225,6 +225,9 @@ namespace Ryujinx.Headless.SDL2
 
         [Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
         public bool IgnoreMissingServices { get; set; }
+        
+        [Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")]
+        public bool IgnoreControllerApplet { get; set; }
 
         // Values
 

+ 3 - 4
src/Ryujinx.Headless.SDL2/Program.cs

@@ -444,8 +444,7 @@ namespace Ryujinx.Headless.SDL2
                 {
                     Logger.AddTarget(new AsyncLogTargetWrapper(
                         new FileLogTarget("file", logFile),
-                        1000,
-                        AsyncLogTargetOverflowAction.Block
+                        1000
                     ));
                 }
                 else
@@ -506,8 +505,8 @@ namespace Ryujinx.Headless.SDL2
         private static WindowBase CreateWindow(Options options)
         {
             return options.GraphicsBackend == GraphicsBackend.Vulkan
-                ? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode)
-                : new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode);
+                ? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode, options.IgnoreControllerApplet)
+                : new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode, options.IgnoreControllerApplet);
         }
 
         private static IRenderer CreateRenderer(Options options, WindowBase window)

+ 3 - 2
src/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs

@@ -17,8 +17,9 @@ namespace Ryujinx.Headless.SDL2.Vulkan
             GraphicsDebugLevel glLogLevel,
             AspectRatio aspectRatio,
             bool enableMouse,
-            HideCursorMode hideCursorMode)
-            : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode)
+            HideCursorMode hideCursorMode,
+            bool ignoreControllerApplet)
+            : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet)
         {
             _glLogLevel = glLogLevel;
         }

+ 6 - 1
src/Ryujinx.Headless.SDL2/WindowBase.cs

@@ -86,13 +86,15 @@ namespace Ryujinx.Headless.SDL2
 
         private readonly AspectRatio _aspectRatio;
         private readonly bool _enableMouse;
+        private readonly bool _ignoreControllerApplet;
 
         public WindowBase(
             InputManager inputManager,
             GraphicsDebugLevel glLogLevel,
             AspectRatio aspectRatio,
             bool enableMouse,
-            HideCursorMode hideCursorMode)
+            HideCursorMode hideCursorMode,
+            bool ignoreControllerApplet)
         {
             MouseDriver = new SDL2MouseDriver(hideCursorMode);
             _inputManager = inputManager;
@@ -108,6 +110,7 @@ namespace Ryujinx.Headless.SDL2
             _gpuDoneEvent = new ManualResetEvent(false);
             _aspectRatio = aspectRatio;
             _enableMouse = enableMouse;
+            _ignoreControllerApplet = ignoreControllerApplet;
             HostUITheme = new HeadlessHostUiTheme();
 
             SDL2Driver.Instance.Initialize();
@@ -484,6 +487,8 @@ namespace Ryujinx.Headless.SDL2
 
         public bool DisplayMessageDialog(ControllerAppletUIArgs args)
         {
+            if (_ignoreControllerApplet) return false;
+            
             string playerCount = args.PlayerCountMin == args.PlayerCountMax ? $"exactly {args.PlayerCountMin}" : $"{args.PlayerCountMin}-{args.PlayerCountMax}";
 
             string message = $"Application requests {playerCount} {"player".ToQuantity(args.PlayerCountMin + args.PlayerCountMax, ShowQuantityAs.None)} with:\n\n"