diff --git a/src/Ryujinx.Graphics.Gpu/Window.cs b/src/Ryujinx.Graphics.Gpu/Window.cs
index d82f66836..6bcedd2b7 100644
--- a/src/Ryujinx.Graphics.Gpu/Window.cs
+++ b/src/Ryujinx.Graphics.Gpu/Window.cs
@@ -213,7 +213,7 @@ namespace Ryujinx.Graphics.Gpu
texture.SynchronizeMemory();
// Add overlays by modifying texture data directly
- AddOverlaysToTexture(texture, pt.Crop);
+ AddOverlaysToTexture(texture);
ImageCrop crop = new(
(int)(pt.Crop.Left * texture.ScaleFactor),
@@ -264,8 +264,7 @@ namespace Ryujinx.Graphics.Gpu
/// Add overlays to the texture using SkiaSharp
///
/// The texture to modify
- /// The crop information containing flip flags
- private void AddOverlaysToTexture(Image.Texture texture, ImageCrop crop)
+ private void AddOverlaysToTexture(Image.Texture texture)
{
try
{
@@ -315,9 +314,9 @@ namespace Ryujinx.Graphics.Gpu
// Create canvas for drawing overlays
using var canvas = new SKCanvas(bitmap);
- // Flip Y-axis if the game/texture requires it
- // Some games have textures that are already flipped, while others need flipping
- if (crop.FlipY)
+ // On Linux with OpenGL, we need to flip the Y-axis because OpenGL uses bottom-left origin
+ // while SkiaSharp uses top-left origin
+ if (OperatingSystem.IsLinux())
{
canvas.Scale(1, -1);
canvas.Translate(0, -height);
diff --git a/src/Ryujinx/UI/Overlay/ControllerOverlay.cs b/src/Ryujinx/UI/Overlay/ControllerOverlay.cs
index 7e6ae6758..e8ea8a547 100644
--- a/src/Ryujinx/UI/Overlay/ControllerOverlay.cs
+++ b/src/Ryujinx/UI/Overlay/ControllerOverlay.cs
@@ -16,6 +16,7 @@ namespace Ryujinx.UI.Overlay
{
private const float OverlayWidth = 400;
private const float Padding = 24;
+ private const float Spacing = 16;
private const float PlayerSpacing = 12;
private const float PlayerRowHeight = 32;
@@ -119,7 +120,7 @@ namespace Ryujinx.UI.Overlay
if (playerBindings.ContainsKey(playerIndex))
{
var controllers = playerBindings[playerIndex];
- var controllerNames = GetUniqueControllerDisplayNames(controllers);
+ var controllerNames = controllers.Select(c => GetControllerDisplayName(c)).ToList();
var controllerTextElement = new TextElement(Padding + 56, rowY + 2, string.Join(", ", controllerNames), PlayerTextSize, new SKColor(144, 238, 144)) // LightGreen
{
@@ -168,37 +169,6 @@ namespace Ryujinx.UI.Overlay
};
}
- private List GetUniqueControllerDisplayNames(List controllers)
- {
- var nameGroups = new Dictionary>();
- var displayNames = new List();
-
- // First pass: get base names and group them
- for (int i = 0; i < controllers.Count; i++)
- {
- string baseName = GetControllerDisplayName(controllers[i]);
-
- if (!nameGroups.ContainsKey(baseName))
- {
- nameGroups[baseName] = new List();
- }
- nameGroups[baseName].Add(i);
- displayNames.Add(baseName);
- }
-
- // Second pass: add numbering for duplicates
- foreach (var group in nameGroups.Where(g => g.Value.Count > 1))
- {
- for (int i = 0; i < group.Value.Count; i++)
- {
- int index = group.Value[i];
- displayNames[index] = $"{group.Key} #{i + 1}";
- }
- }
-
- return displayNames;
- }
-
private string GetControllerDisplayName(OriginalInputConfig config)
{
if (string.IsNullOrEmpty(config.Name))
@@ -211,15 +181,11 @@ namespace Ryujinx.UI.Overlay
};
}
- // Truncate long controller names from the middle
+ // Truncate long controller names
string name = config.Name;
if (name.Length > 25)
{
- int keepLength = 22; // Total characters to keep (excluding "...")
- int leftLength = (keepLength + 1) / 2; // Round up for left side
- int rightLength = keepLength / 2; // Round down for right side
-
- name = name.Substring(0, leftLength) + "..." + name.Substring(name.Length - rightLength);
+ name = name.Substring(0, 22) + "...";
}
return name;