From 51b3953cfc3b440aa0b7b1b06d33626426e54556 Mon Sep 17 00:00:00 2001 From: TSRBerry <20988865+TSRBerry@users.noreply.github.com> Date: Mon, 9 Jan 2023 04:55:37 +0100 Subject: [PATCH] [Headless] Add missing arguments & Fix typos (#4193) * headless: Fix typos in command line options * Remove nullable from command line options Add EnableMacroHLE option Add HideCursorOnIdle option * headless: Adjust enable-ptc help text * headless: Use switch statement instead of if-else chain * headless: Improve formatting for long constructors * headless: Remove discards from SDL_ShowCursor() * headless: Add window icon * Fix hiding cursor on idle At least on Wayland, SDL2 doesn't produce any mouse motion events. * Add new command line args: BaseDataDir and UserProfile * headless: Read icon from embedded resource * headless: Skip SetWindowIcon() on Windows if dll isn't present * headless: Fix division by zero * headless: Fix command line options not working correctly * headless: Fix crash when viewing command line options * headless: Load window icon bmp from memory * Add comment to the workaround for SDL_LoadBMP_RW * headless: Enable logging to file by default * headless: Add 3 options for --hide-cursor Replaces --disable-hide-cursor-on-idle --- Ryujinx.Headless.SDL2/HideCursor.cs | 9 ++ Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs | 11 ++- Ryujinx.Headless.SDL2/Options.cs | 82 +++++++++------- Ryujinx.Headless.SDL2/Program.cs | 90 +++++++++--------- .../Ryujinx.Headless.SDL2.csproj | 4 + Ryujinx.Headless.SDL2/Ryujinx.bmp | Bin 0 -> 1122442 bytes Ryujinx.Headless.SDL2/SDL2MouseDriver.cs | 87 ++++++++++++++--- Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs | 10 +- Ryujinx.Headless.SDL2/WindowBase.cs | 55 ++++++++++- Ryujinx.Input/HLE/NpadManager.cs | 2 +- 10 files changed, 248 insertions(+), 102 deletions(-) create mode 100644 Ryujinx.Headless.SDL2/HideCursor.cs create mode 100644 Ryujinx.Headless.SDL2/Ryujinx.bmp diff --git a/Ryujinx.Headless.SDL2/HideCursor.cs b/Ryujinx.Headless.SDL2/HideCursor.cs new file mode 100644 index 000000000..2dc0bd6ab --- /dev/null +++ b/Ryujinx.Headless.SDL2/HideCursor.cs @@ -0,0 +1,9 @@ +namespace Ryujinx.Headless.SDL2 +{ + public enum HideCursor + { + Never, + OnIdle, + Always + } +} \ No newline at end of file diff --git a/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs b/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs index d1d0872b3..69b0f42fb 100644 --- a/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs +++ b/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs @@ -5,7 +5,6 @@ using Ryujinx.Common.Logging; using Ryujinx.Graphics.OpenGL; using Ryujinx.Input.HLE; using System; - using static SDL2.SDL; namespace Ryujinx.Headless.SDL2.OpenGL @@ -103,7 +102,13 @@ namespace Ryujinx.Headless.SDL2.OpenGL private GraphicsDebugLevel _glLogLevel; private SDL2OpenGLContext _openGLContext; - public OpenGLWindow(InputManager inputManager, GraphicsDebugLevel glLogLevel, AspectRatio aspectRatio, bool enableMouse) : base(inputManager, glLogLevel, aspectRatio, enableMouse) + public OpenGLWindow( + InputManager inputManager, + GraphicsDebugLevel glLogLevel, + AspectRatio aspectRatio, + bool enableMouse, + HideCursor hideCursor) + : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursor) { _glLogLevel = glLogLevel; } @@ -161,4 +166,4 @@ namespace Ryujinx.Headless.SDL2.OpenGL SDL_GL_SwapWindow(WindowHandle); } } -} +} \ No newline at end of file diff --git a/Ryujinx.Headless.SDL2/Options.cs b/Ryujinx.Headless.SDL2/Options.cs index 209ce2288..49233bcea 100644 --- a/Ryujinx.Headless.SDL2/Options.cs +++ b/Ryujinx.Headless.SDL2/Options.cs @@ -6,6 +6,14 @@ namespace Ryujinx.Headless.SDL2 { public class Options { + // General + + [Option("root-data-dir", Required = false, HelpText = "Set the custom folder path for Ryujinx data.")] + public string BaseDataDir { get; set; } + + [Option("profile", Required = false, HelpText = "Set the user profile to launch the game with.")] + public string UserProfile { get; set; } + // Input [Option("input-profile-1", Required = false, HelpText = "Set the input profile in use for Player 1.")] @@ -23,7 +31,7 @@ namespace Ryujinx.Headless.SDL2 [Option("input-profile-5", Required = false, HelpText = "Set the input profile in use for Player 5.")] public string InputProfile5Name { get; set; } - [Option("input-profile-6", Required = false, HelpText = "Set the input profile in use for Player 5.")] + [Option("input-profile-6", Required = false, HelpText = "Set the input profile in use for Player 6.")] public string InputProfile6Name { get; set; } [Option("input-profile-7", Required = false, HelpText = "Set the input profile in use for Player 7.")] @@ -63,42 +71,45 @@ namespace Ryujinx.Headless.SDL2 public string InputIdHandheld { get; set; } [Option("enable-keyboard", Required = false, Default = false, HelpText = "Enable or disable keyboard support (Independent from controllers binding).")] - public bool? EnableKeyboard { get; set; } + public bool EnableKeyboard { get; set; } [Option("enable-mouse", Required = false, Default = false, HelpText = "Enable or disable mouse support.")] - public bool? EnableMouse { get; set; } + public bool EnableMouse { get; set; } + + [Option("hide-cursor", Required = false, Default = HideCursor.OnIdle, HelpText = "Change when the cursor gets hidden.")] + public HideCursor HideCursor { get; set; } [Option("list-input-profiles", Required = false, HelpText = "List inputs profiles.")] - public bool? ListInputProfiles { get; set; } + public bool ListInputProfiles { get; set; } [Option("list-inputs-ids", Required = false, HelpText = "List inputs ids.")] public bool ListInputIds { get; set; } // System - [Option("enable-ptc", Required = false, Default = true, HelpText = "Enables profiled translation cache persistency.")] - public bool? EnablePtc { get; set; } + [Option("disable-ptc", Required = false, HelpText = "Disables profiled persistent translation cache.")] + public bool DisablePtc { get; set; } [Option("enable-internet-connection", Required = false, Default = false, HelpText = "Enables guest Internet connection.")] - public bool? EnableInternetAccess { get; set; } + public bool EnableInternetAccess { get; set; } - [Option("enable-fs-integrity-checks", Required = false, Default = true, HelpText = "Enables integrity checks on Game content files.")] - public bool? EnableFsIntegrityChecks { get; set; } + [Option("disable-fs-integrity-checks", Required = false, HelpText = "Disables integrity checks on Game content files.")] + public bool DisableFsIntegrityChecks { get; set; } [Option("fs-global-access-log-mode", Required = false, Default = 0, HelpText = "Enables FS access log output to the console.")] public int FsGlobalAccessLogMode { get; set; } - [Option("enable-vsync", Required = false, Default = true, HelpText = "Enables Vertical Sync.")] - public bool? EnableVsync { get; set; } + [Option("disable-vsync", Required = false, HelpText = "Disables Vertical Sync.")] + public bool DisableVsync { get; set; } - [Option("enable-shader-cache", Required = false, Default = true, HelpText = "Enables Shader cache.")] - public bool? EnableShaderCache { get; set; } + [Option("disable-shader-cache", Required = false, HelpText = "Disables Shader cache.")] + public bool DisableShaderCache { get; set; } [Option("enable-texture-recompression", Required = false, Default = false, HelpText = "Enables Texture recompression.")] - public bool? EnableTextureRecompression { get; set; } + public bool EnableTextureRecompression { get; set; } - [Option("enable-docked-mode", Required = false, Default = true, HelpText = "Enables Docked Mode.")] - public bool? EnableDockedMode { get; set; } + [Option("disable-docked-mode", Required = false, HelpText = "Disables Docked Mode.")] + public bool DisableDockedMode { get; set; } [Option("system-language", Required = false, Default = SystemLanguage.AmericanEnglish, HelpText = "Change System Language.")] public SystemLanguage SystemLanguage { get; set; } @@ -120,32 +131,32 @@ namespace Ryujinx.Headless.SDL2 // Logging - [Option("enable-file-logging", Required = false, Default = false, HelpText = "Enables logging to a file on disk.")] - public bool? EnableFileLog { get; set; } + [Option("disable-file-logging", Required = false, Default = false, HelpText = "Disables logging to a file on disk.")] + public bool DisableFileLog { get; set; } [Option("enable-debug-logs", Required = false, Default = false, HelpText = "Enables printing debug log messages.")] - public bool? LoggingEnableDebug { get; set; } + public bool LoggingEnableDebug { get; set; } - [Option("enable-stub-logs", Required = false, Default = true, HelpText = "Enables printing stub log messages.")] - public bool? LoggingEnableStub { get; set; } + [Option("disable-stub-logs", Required = false, HelpText = "Disables printing stub log messages.")] + public bool LoggingDisableStub { get; set; } - [Option("enable-info-logs", Required = false, Default = true, HelpText = "Enables printing info log messages.")] - public bool? LoggingEnableInfo { get; set; } + [Option("disable-info-logs", Required = false, HelpText = "Disables printing info log messages.")] + public bool LoggingDisableInfo { get; set; } - [Option("enable-warning-logs", Required = false, Default = true, HelpText = "Enables printing warning log messages.")] - public bool? LoggingEnableWarning { get; set; } + [Option("disable-warning-logs", Required = false, HelpText = "Disables printing warning log messages.")] + public bool LoggingDisableWarning { get; set; } - [Option("enable-error-logs", Required = false, Default = true, HelpText = "Enables printing error log messages.")] - public bool? LoggingEnableError { get; set; } + [Option("disable-error-logs", Required = false, HelpText = "Disables printing error log messages.")] + public bool LoggingEnableError { get; set; } [Option("enable-trace-logs", Required = false, Default = false, HelpText = "Enables printing trace log messages.")] - public bool? LoggingEnableTrace { get; set; } + public bool LoggingEnableTrace { get; set; } - [Option("enable-guest-logs", Required = false, Default = true, HelpText = "Enables printing guest log messages.")] - public bool? LoggingEnableGuest { get; set; } + [Option("disable-guest-logs", Required = false, HelpText = "Disables printing guest log messages.")] + public bool LoggingDisableGuest { get; set; } [Option("enable-fs-access-logs", Required = false, Default = false, HelpText = "Enables printing FS access log messages.")] - public bool? LoggingEnableFsAccessLog { get; set; } + public bool LoggingEnableFsAccessLog { get; set; } [Option("graphics-debug-level", Required = false, Default = GraphicsDebugLevel.None, HelpText = "Change Graphics API debug log level.")] public GraphicsDebugLevel LoggingGraphicsDebugLevel { get; set; } @@ -164,6 +175,9 @@ namespace Ryujinx.Headless.SDL2 [Option("backend-threading", Required = false, Default = BackendThreading.Auto, HelpText = "Whether or not backend threading is enabled. The \"Auto\" setting will determine whether threading should be enabled at runtime.")] public BackendThreading BackendThreading { get; set; } + [Option("disable-macro-hle", Required= false, HelpText = "Disables high-level emulation of Macro code. Leaving this enabled improves performance but may cause graphical glitches in some games.")] + public bool DisableMacroHLE { get; set; } + [Option("graphics-shaders-dump-path", Required = false, HelpText = "Dumps shaders in this local directory. (Developer only)")] public string GraphicsShadersDumpPath { get; set; } @@ -176,14 +190,14 @@ namespace Ryujinx.Headless.SDL2 // Hacks [Option("expand-ram", Required = false, Default = false, HelpText = "Expands the RAM amount on the emulated system from 4GiB to 6GiB.")] - public bool? ExpandRam { get; set; } + public bool ExpandRam { get; set; } [Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")] - public bool? IgnoreMissingServices { get; set; } + public bool IgnoreMissingServices { get; set; } // Values [Value(0, MetaName = "input", HelpText = "Input to load.", Required = true)] public string InputPath { get; set; } } -} +} \ No newline at end of file diff --git a/Ryujinx.Headless.SDL2/Program.cs b/Ryujinx.Headless.SDL2/Program.cs index 84363e1fb..6ea3a98d7 100644 --- a/Ryujinx.Headless.SDL2/Program.cs +++ b/Ryujinx.Headless.SDL2/Program.cs @@ -33,7 +33,6 @@ using System.Collections.Generic; using System.IO; using System.Text.Json; using System.Threading; - using ConfigGamepadInputId = Ryujinx.Common.Configuration.Hid.Controller.GamepadInputId; using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId; using Key = Ryujinx.Common.Configuration.Hid.Key; @@ -63,20 +62,6 @@ namespace Ryujinx.Headless.SDL2 Console.Title = $"Ryujinx Console {Version} (Headless SDL2)"; - AppDataManager.Initialize(null); - - _virtualFileSystem = VirtualFileSystem.CreateInstance(); - _libHacHorizonManager = new LibHacHorizonManager(); - - _libHacHorizonManager.InitializeFsServer(_virtualFileSystem); - _libHacHorizonManager.InitializeArpServer(); - _libHacHorizonManager.InitializeBcatServer(); - _libHacHorizonManager.InitializeSystemClients(); - - _contentManager = new ContentManager(_virtualFileSystem); - _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient); - _userChannelPersistence = new UserChannelPersistence(); - if (OperatingSystem.IsMacOS() || OperatingSystem.IsLinux()) { AutoResetEvent invoked = new AutoResetEvent(false); @@ -97,15 +82,9 @@ namespace Ryujinx.Headless.SDL2 }; } - _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); - - GraphicsConfig.EnableShaderCache = true; - Parser.Default.ParseArguments(args) - .WithParsed(options => Load(options)) + .WithParsed(Load) .WithNotParsed(errors => errors.Output()); - - _inputManager.Dispose(); } private static InputConfig HandlePlayerConfiguration(string inputProfileName, string inputId, PlayerIndex index) @@ -343,6 +322,24 @@ namespace Ryujinx.Headless.SDL2 static void Load(Options option) { + AppDataManager.Initialize(option.BaseDataDir); + + _virtualFileSystem = VirtualFileSystem.CreateInstance(); + _libHacHorizonManager = new LibHacHorizonManager(); + + _libHacHorizonManager.InitializeFsServer(_virtualFileSystem); + _libHacHorizonManager.InitializeArpServer(); + _libHacHorizonManager.InitializeBcatServer(); + _libHacHorizonManager.InitializeSystemClients(); + + _contentManager = new ContentManager(_virtualFileSystem); + _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient, option.UserProfile); + _userChannelPersistence = new UserChannelPersistence(); + + _inputManager = new InputManager(new SDL2KeyboardDriver(), new SDL2GamepadDriver()); + + GraphicsConfig.EnableShaderCache = true; + IGamepad gamepad; if (option.ListInputIds) @@ -378,8 +375,8 @@ namespace Ryujinx.Headless.SDL2 } _inputConfiguration = new List(); - _enableKeyboard = (bool)option.EnableKeyboard; - _enableMouse = (bool)option.EnableMouse; + _enableKeyboard = option.EnableKeyboard; + _enableMouse = option.EnableMouse; void LoadPlayerConfiguration(string inputProfileName, string inputId, PlayerIndex index) { @@ -407,16 +404,16 @@ namespace Ryujinx.Headless.SDL2 } // Setup logging level - Logger.SetEnable(LogLevel.Debug, (bool)option.LoggingEnableDebug); - Logger.SetEnable(LogLevel.Stub, (bool)option.LoggingEnableStub); - Logger.SetEnable(LogLevel.Info, (bool)option.LoggingEnableInfo); - Logger.SetEnable(LogLevel.Warning, (bool)option.LoggingEnableWarning); - Logger.SetEnable(LogLevel.Error, (bool)option.LoggingEnableError); - Logger.SetEnable(LogLevel.Trace, (bool)option.LoggingEnableTrace); - Logger.SetEnable(LogLevel.Guest, (bool)option.LoggingEnableGuest); - Logger.SetEnable(LogLevel.AccessLog, (bool)option.LoggingEnableFsAccessLog); + Logger.SetEnable(LogLevel.Debug, option.LoggingEnableDebug); + Logger.SetEnable(LogLevel.Stub, !option.LoggingDisableStub); + Logger.SetEnable(LogLevel.Info, !option.LoggingDisableInfo); + Logger.SetEnable(LogLevel.Warning, !option.LoggingDisableWarning); + Logger.SetEnable(LogLevel.Error, option.LoggingEnableError); + Logger.SetEnable(LogLevel.Trace, option.LoggingEnableTrace); + Logger.SetEnable(LogLevel.Guest, !option.LoggingDisableGuest); + Logger.SetEnable(LogLevel.AccessLog, option.LoggingEnableFsAccessLog); - if ((bool)option.EnableFileLog) + if (!option.DisableFileLog) { Logger.AddTarget(new AsyncLogTargetWrapper( new FileLogTarget(ReleaseInformation.GetBaseApplicationDirectory(), "file"), @@ -426,11 +423,12 @@ namespace Ryujinx.Headless.SDL2 } // Setup graphics configuration - GraphicsConfig.EnableShaderCache = (bool)option.EnableShaderCache; - GraphicsConfig.EnableTextureRecompression = (bool)option.EnableTextureRecompression; + GraphicsConfig.EnableShaderCache = !option.DisableShaderCache; + GraphicsConfig.EnableTextureRecompression = option.EnableTextureRecompression; GraphicsConfig.ResScale = option.ResScale; GraphicsConfig.MaxAnisotropy = option.MaxAnisotropy; GraphicsConfig.ShadersDumpPath = option.GraphicsShadersDumpPath; + GraphicsConfig.EnableMacroHLE = !option.DisableMacroHLE; while (true) { @@ -443,6 +441,8 @@ namespace Ryujinx.Headless.SDL2 _userChannelPersistence.ShouldRestart = false; } + + _inputManager.Dispose(); } private static void SetupProgressHandler() @@ -479,8 +479,8 @@ namespace Ryujinx.Headless.SDL2 private static WindowBase CreateWindow(Options options) { return options.GraphicsBackend == GraphicsBackend.Vulkan - ? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, (bool)options.EnableMouse) - : new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, (bool)options.EnableMouse); + ? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursor) + : new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursor); } private static IRenderer CreateRenderer(Options options, WindowBase window) @@ -533,20 +533,20 @@ namespace Ryujinx.Headless.SDL2 _userChannelPersistence, renderer, new SDL2HardwareDeviceDriver(), - (bool)options.ExpandRam ? MemoryConfiguration.MemoryConfiguration6GiB : MemoryConfiguration.MemoryConfiguration4GiB, + options.ExpandRam ? MemoryConfiguration.MemoryConfiguration6GiB : MemoryConfiguration.MemoryConfiguration4GiB, window, options.SystemLanguage, options.SystemRegion, - (bool)options.EnableVsync, - (bool)options.EnableDockedMode, - (bool)options.EnablePtc, - (bool)options.EnableInternetAccess, - (bool)options.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None, + !options.DisableVsync, + !options.DisableDockedMode, + !options.DisablePtc, + options.EnableInternetAccess, + !options.DisableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None, options.FsGlobalAccessLogMode, options.SystemTimeOffset, options.SystemTimeZone, options.MemoryManagerMode, - (bool)options.IgnoreMissingServices, + options.IgnoreMissingServices, options.AspectRatio, options.AudioVolume); @@ -649,7 +649,7 @@ namespace Ryujinx.Headless.SDL2 } else { - Logger.Warning?.Print(LogClass.Application, "Please specify a valid XCI/NCA/NSP/PFS0/NRO file."); + Logger.Warning?.Print(LogClass.Application, $"Couldn't load '{options.InputPath}'. Please specify a valid XCI/NCA/NSP/PFS0/NRO file."); _emulationContext.Dispose(); diff --git a/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj b/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj index 44a162051..81ef53fe7 100644 --- a/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj +++ b/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj @@ -42,6 +42,10 @@ + + + + false diff --git a/Ryujinx.Headless.SDL2/Ryujinx.bmp b/Ryujinx.Headless.SDL2/Ryujinx.bmp new file mode 100644 index 0000000000000000000000000000000000000000..413f3b21bb8af18fa2e47aa2468df02546dd359a GIT binary patch literal 1122442 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%0AUG)#{m#y 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

i2{0 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 literal 0 HcmV?d00001 diff --git a/Ryujinx.Headless.SDL2/SDL2MouseDriver.cs b/Ryujinx.Headless.SDL2/SDL2MouseDriver.cs index 236d47698..bdf428cc4 100644 --- a/Ryujinx.Headless.SDL2/SDL2MouseDriver.cs +++ b/Ryujinx.Headless.SDL2/SDL2MouseDriver.cs @@ -10,7 +10,12 @@ namespace Ryujinx.Headless.SDL2 { class SDL2MouseDriver : IGamepadDriver { + private const int CursorHideIdleTime = 8; // seconds + private bool _isDisposed; + private HideCursor _hideCursor; + private bool _isHidden; + private long _lastCursorMoveTime; public bool[] PressedButtons { get; } @@ -18,9 +23,16 @@ namespace Ryujinx.Headless.SDL2 public Vector2 Scroll { get; private set; } public Size _clientSize; - public SDL2MouseDriver() + public SDL2MouseDriver(HideCursor hideCursor) { PressedButtons = new bool[(int)MouseButton.Count]; + _hideCursor = hideCursor; + + if (_hideCursor == HideCursor.Always) + { + SDL_ShowCursor(SDL_DISABLE); + _isHidden = true; + } } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -31,26 +43,75 @@ namespace Ryujinx.Headless.SDL2 return (MouseButton)(rawButton - 1); } - public void Update(SDL_Event evnt) + public void UpdatePosition() { - if (evnt.type == SDL_EventType.SDL_MOUSEBUTTONDOWN || evnt.type == SDL_EventType.SDL_MOUSEBUTTONUP) + SDL_GetMouseState(out int posX, out int posY); + Vector2 position = new(posX, posY); + + if (CurrentPosition != position) { - uint rawButton = evnt.button.button; + CurrentPosition = position; + _lastCursorMoveTime = Stopwatch.GetTimestamp(); + } - if (rawButton > 0 && rawButton <= (int)MouseButton.Count) + CheckIdle(); + } + + private void CheckIdle() + { + if (_hideCursor != HideCursor.OnIdle) + { + return; + } + + long cursorMoveDelta = Stopwatch.GetTimestamp() - _lastCursorMoveTime; + + if (cursorMoveDelta >= CursorHideIdleTime * Stopwatch.Frequency) + { + if (!_isHidden) { - PressedButtons[(int)DriverButtonToMouseButton(rawButton)] = evnt.type == SDL_EventType.SDL_MOUSEBUTTONDOWN; - - CurrentPosition = new Vector2(evnt.button.x, evnt.button.y); + SDL_ShowCursor(SDL_DISABLE); + _isHidden = true; } } - else if (evnt.type == SDL_EventType.SDL_MOUSEMOTION) + else { - CurrentPosition = new Vector2(evnt.motion.x, evnt.motion.y); + if (_isHidden) + { + SDL_ShowCursor(SDL_ENABLE); + _isHidden = false; + } } - else if (evnt.type == SDL_EventType.SDL_MOUSEWHEEL) + } + + public void Update(SDL_Event evnt) + { + switch (evnt.type) { - Scroll = new Vector2(evnt.wheel.x, evnt.wheel.y); + case SDL_EventType.SDL_MOUSEBUTTONDOWN: + case SDL_EventType.SDL_MOUSEBUTTONUP: + uint rawButton = evnt.button.button; + + if (rawButton > 0 && rawButton <= (int)MouseButton.Count) + { + PressedButtons[(int)DriverButtonToMouseButton(rawButton)] = evnt.type == SDL_EventType.SDL_MOUSEBUTTONDOWN; + + CurrentPosition = new Vector2(evnt.button.x, evnt.button.y); + } + + break; + + // NOTE: On Linux using Wayland mouse motion events won't be received at all. + case SDL_EventType.SDL_MOUSEMOTION: + CurrentPosition = new Vector2(evnt.motion.x, evnt.motion.y); + _lastCursorMoveTime = Stopwatch.GetTimestamp(); + + break; + + case SDL_EventType.SDL_MOUSEWHEEL: + Scroll = new Vector2(evnt.wheel.x, evnt.wheel.y); + + break; } } @@ -100,4 +161,4 @@ namespace Ryujinx.Headless.SDL2 _isDisposed = true; } } -} +} \ No newline at end of file diff --git a/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs b/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs index 183233397..172b7685a 100644 --- a/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs +++ b/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs @@ -12,7 +12,13 @@ namespace Ryujinx.Headless.SDL2.Vulkan { private GraphicsDebugLevel _glLogLevel; - public VulkanWindow(InputManager inputManager, GraphicsDebugLevel glLogLevel, AspectRatio aspectRatio, bool enableMouse) : base(inputManager, glLogLevel, aspectRatio, enableMouse) + public VulkanWindow( + InputManager inputManager, + GraphicsDebugLevel glLogLevel, + AspectRatio aspectRatio, + bool enableMouse, + HideCursor hideCursor) + : base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursor) { _glLogLevel = glLogLevel; } @@ -95,4 +101,4 @@ namespace Ryujinx.Headless.SDL2.Vulkan protected override void SwapBuffers() { } } -} +} \ No newline at end of file diff --git a/Ryujinx.Headless.SDL2/WindowBase.cs b/Ryujinx.Headless.SDL2/WindowBase.cs index 88b0d5733..db6c8ec4d 100644 --- a/Ryujinx.Headless.SDL2/WindowBase.cs +++ b/Ryujinx.Headless.SDL2/WindowBase.cs @@ -14,13 +14,16 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; using System.Threading; using static SDL2.SDL; using Switch = Ryujinx.HLE.Switch; namespace Ryujinx.Headless.SDL2 { - abstract class WindowBase : IHostUiHandler, IDisposable + abstract partial class WindowBase : IHostUiHandler, IDisposable { protected const int DefaultWidth = 1280; protected const int DefaultHeight = 720; @@ -29,6 +32,10 @@ namespace Ryujinx.Headless.SDL2 private static ConcurrentQueue MainThreadActions = new ConcurrentQueue(); + [LibraryImport("SDL2")] + // TODO: Remove this as soon as SDL2-CS was updated to expose this method publicly + private static partial IntPtr SDL_LoadBMP_RW(IntPtr src, int freesrc); + public static void QueueMainThreadAction(Action action) { MainThreadActions.Enqueue(action); @@ -66,9 +73,14 @@ namespace Ryujinx.Headless.SDL2 private AspectRatio _aspectRatio; private bool _enableMouse; - public WindowBase(InputManager inputManager, GraphicsDebugLevel glLogLevel, AspectRatio aspectRatio, bool enableMouse) + public WindowBase( + InputManager inputManager, + GraphicsDebugLevel glLogLevel, + AspectRatio aspectRatio, + bool enableMouse, + HideCursor hideCursor) { - MouseDriver = new SDL2MouseDriver(); + MouseDriver = new SDL2MouseDriver(hideCursor); _inputManager = inputManager; _inputManager.SetMouseDriver(MouseDriver); NpadManager = _inputManager.CreateNpadManager(); @@ -103,6 +115,34 @@ namespace Ryujinx.Headless.SDL2 TouchScreenManager.Initialize(device); } + private void SetWindowIcon() + { + Stream iconStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Ryujinx.Headless.SDL2.Ryujinx.bmp"); + byte[] iconBytes = new byte[iconStream!.Length]; + + if (iconStream.Read(iconBytes, 0, iconBytes.Length) != iconBytes.Length) + { + Logger.Error?.Print(LogClass.Application, "Failed to read icon to byte array."); + iconStream.Close(); + + return; + } + + iconStream.Close(); + + unsafe + { + fixed (byte* iconPtr = iconBytes) + { + IntPtr rwOpsStruct = SDL_RWFromConstMem((IntPtr)iconPtr, iconBytes.Length); + IntPtr iconHandle = SDL_LoadBMP_RW(rwOpsStruct, 1); + + SDL_SetWindowIcon(WindowHandle, iconHandle); + SDL_FreeSurface(iconHandle); + } + } + } + private void InitializeWindow() { string titleNameSection = string.IsNullOrWhiteSpace(Device.Application.TitleName) ? string.Empty @@ -127,6 +167,8 @@ namespace Ryujinx.Headless.SDL2 throw new Exception(errorMessage); } + SetWindowIcon(); + _windowId = SDL_GetWindowID(WindowHandle); SDL2Driver.Instance.RegisterWindow(_windowId, HandleWindowEvent); @@ -146,9 +188,11 @@ namespace Ryujinx.Headless.SDL2 Renderer?.Window.SetSize(Width, Height); MouseDriver.SetClientSize(Width, Height); break; + case SDL_WindowEventID.SDL_WINDOWEVENT_CLOSE: Exit(); break; + default: break; } @@ -331,6 +375,9 @@ namespace Ryujinx.Headless.SDL2 Device.Hid.DebugPad.Update(); + // TODO: Replace this with MouseDriver.CheckIdle() when mouse motion events are received on every supported platform. + MouseDriver.UpdatePosition(); + return true; } @@ -451,4 +498,4 @@ namespace Ryujinx.Headless.SDL2 } } } -} +} \ No newline at end of file diff --git a/Ryujinx.Input/HLE/NpadManager.cs b/Ryujinx.Input/HLE/NpadManager.cs index 34e05687f..5290ecbb7 100644 --- a/Ryujinx.Input/HLE/NpadManager.cs +++ b/Ryujinx.Input/HLE/NpadManager.cs @@ -163,7 +163,7 @@ namespace Ryujinx.Input.HLE ReloadConfiguration(inputConfig, enableKeyboard, enableMouse); } - public void Update(float aspectRatio = 0) + public void Update(float aspectRatio = 1) { lock (_lock) {