diff --git a/osu.Framework/Platform/SDL2/SDL2Window_Windowing.cs b/osu.Framework/Platform/SDL2/SDL2Window_Windowing.cs index 2a270dcb4..e1ff94121 100644 --- a/osu.Framework/Platform/SDL2/SDL2Window_Windowing.cs +++ b/osu.Framework/Platform/SDL2/SDL2Window_Windowing.cs @@ -302,8 +302,18 @@ namespace osu.Framework.Platform.SDL2 /// private void fetchDisplays() { - Displays = getSDLDisplays(); - DisplaysChanged?.Invoke(Displays); + var newDisplays = getSDLDisplays(); + + if (newDisplays.Length > 0) + { + Displays = newDisplays; + DisplaysChanged?.Invoke(newDisplays); + } + else + { + // keep Displays stale if zero displays are currently detected + Logger.Log("Got zero displays from SDL, ignoring."); + } } /// @@ -328,7 +338,7 @@ namespace osu.Framework.Platform.SDL2 { int numDisplays = SDL_GetNumVideoDisplays(); - if (numDisplays <= 0) + if (numDisplays < 0) throw new InvalidOperationException($"Failed to get number of SDL displays. Return code: {numDisplays}. SDL Error: {SDL_GetError()}"); var builder = ImmutableArray.CreateBuilder(numDisplays); diff --git a/osu.Framework/Platform/SDL3/SDL3Window_Windowing.cs b/osu.Framework/Platform/SDL3/SDL3Window_Windowing.cs index 8117d407b..16718594b 100644 --- a/osu.Framework/Platform/SDL3/SDL3Window_Windowing.cs +++ b/osu.Framework/Platform/SDL3/SDL3Window_Windowing.cs @@ -306,8 +306,18 @@ namespace osu.Framework.Platform.SDL3 /// private void fetchDisplays() { - Displays = getSDLDisplays(); - DisplaysChanged?.Invoke(Displays); + var newDisplays = getSDLDisplays(); + + if (newDisplays.Length > 0) + { + Displays = newDisplays; + DisplaysChanged?.Invoke(newDisplays); + } + else + { + // keep Displays stale if zero displays are currently detected + Logger.Log("Got zero displays from SDL, ignoring."); + } } ///