From 9d28af935d3b22341f9daf9ba51a04cc9610552e Mon Sep 17 00:00:00 2001
From: Evan Husted <greem@greemdev.net>
Date: Tue, 28 Jan 2025 20:16:41 -0600
Subject: [PATCH] headless: Enable Rainbow cycling if any input configs have
 UseRainbow enabled

---
 src/Ryujinx.HLE/HLEConfiguration.cs     | 1 +
 src/Ryujinx/Headless/HeadlessRyujinx.cs | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/src/Ryujinx.HLE/HLEConfiguration.cs b/src/Ryujinx.HLE/HLEConfiguration.cs
index 8ac76508f..0b7ae3974 100644
--- a/src/Ryujinx.HLE/HLEConfiguration.cs
+++ b/src/Ryujinx.HLE/HLEConfiguration.cs
@@ -192,6 +192,7 @@ namespace Ryujinx.HLE
         /// <summary>
         ///     The desired hacky workarounds.
         /// </summary>
+        /// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
         public EnabledDirtyHack[] Hacks { internal get; set; }
 
         public HLEConfiguration(VirtualFileSystem virtualFileSystem,
diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs
index 18efdceee..fafcbf01e 100644
--- a/src/Ryujinx/Headless/HeadlessRyujinx.cs
+++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs
@@ -5,6 +5,7 @@ using Ryujinx.Ava.Utilities.Configuration;
 using Ryujinx.Common;
 using Ryujinx.Common.Configuration;
 using Ryujinx.Common.Configuration.Hid;
+using Ryujinx.Common.Configuration.Hid.Controller;
 using Ryujinx.Common.GraphicsDriver;
 using Ryujinx.Common.Logging;
 using Ryujinx.Common.Logging.Targets;
@@ -26,6 +27,7 @@ using Ryujinx.SDL2.Common;
 using System;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
 using System.Threading;
 
 namespace Ryujinx.Headless
@@ -286,6 +288,9 @@ namespace Ryujinx.Headless
             GraphicsConfig.EnableMacroHLE = !option.DisableMacroHLE;
 
             DriverUtilities.InitDriverConfig(option.BackendThreading == BackendThreading.Off);
+            
+            if (_inputConfiguration.OfType<StandardControllerInputConfig>().Any(ic => ic.Led.UseRainbow))
+                Rainbow.Enable();
 
             while (true)
             {