From d730f3b49fc08ae731e03f6983fc22f0f8f5ab51 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 4 Apr 2025 12:12:47 -0400 Subject: [PATCH] v3.1.0: improved the weird steam deck reported display dimensions test --- .../src/main/java/com/watabou/noosa/Game.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Game.java b/SPD-classes/src/main/java/com/watabou/noosa/Game.java index 7d95a5685..8024298ea 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Game.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Game.java @@ -100,15 +100,15 @@ public class Game implements ApplicationListener { if (density == Float.POSITIVE_INFINITY){ density = 100f / 160f; //assume 100PPI if density can't be found } else if (DeviceCompat.isDesktop()) { - float PpiX = Gdx.graphics.getPpiX(); - float PpiY = Gdx.graphics.getPpiY(); + float reportedWidth = dispWidth / Gdx.graphics.getPpiX(); + float reportedHeight = dispHeight / Gdx.graphics.getPpiY(); //this exists because Steam deck reports its display size as 4"x6.3" for some reason // as if in portrait, instead of 6.3"x4". This results in incorrect PPI measurements. - // So when the PPIs differ, we assume reported display size is flipped and adjust - if (PpiX / PpiY > 1.1f || PpiX / PpiY < 0.9f ){ - float reportedDisplayHeightInches = dispHeight / PpiY; //it's actually the width - float realPpiX = dispWidth / reportedDisplayHeightInches; + // So we check that the orientation of the resolution and the display dimensions match. + // If they don't, re-calculate density assuming reported dimensions are flipped. + if (dispWidth > dispHeight != reportedWidth > reportedHeight){ + float realPpiX = dispWidth / reportedHeight; density = realPpiX / 160f; } }