From 4930087c4d478301a5d2f9bac2793e1c6a749949 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 30 Nov 2018 19:49:14 -0800 Subject: [PATCH] Remove 63 Hz cap for > 60 FPS streams --- app/src/main/java/com/limelight/Game.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 1d4b15eb..e0fccc8d 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -497,8 +497,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Display.Mode bestMode = display.getMode(); for (Display.Mode candidate : display.getSupportedModes()) { - boolean refreshRateOk = candidate.getRefreshRate() >= bestMode.getRefreshRate() && - candidate.getRefreshRate() < 63; + boolean refreshRateOk = candidate.getRefreshRate() >= bestMode.getRefreshRate(); boolean resolutionOk = candidate.getPhysicalWidth() >= bestMode.getPhysicalWidth() && candidate.getPhysicalHeight() >= bestMode.getPhysicalHeight() && candidate.getPhysicalWidth() <= 4096; @@ -514,6 +513,13 @@ public class Game extends Activity implements SurfaceHolder.Callback, } } + // Ensure the frame rate stays around 60 Hz for <= 60 FPS streams + if (prefConfig.fps <= 60) { + if (candidate.getRefreshRate() >= 63) { + continue; + } + } + // Make sure the refresh rate doesn't regress if (!refreshRateOk) { continue; @@ -531,12 +537,20 @@ public class Game extends Activity implements SurfaceHolder.Callback, windowLayoutParams.preferredDisplayModeId = bestMode.getModeId(); displayRefreshRate = bestMode.getRefreshRate(); } - // On L, we can at least tell the OS that we want 60 Hz + // On L, we can at least tell the OS that we want a refresh rate else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { float bestRefreshRate = display.getRefreshRate(); for (float candidate : display.getSupportedRefreshRates()) { - if (candidate > bestRefreshRate && candidate < 63) { + if (candidate > bestRefreshRate) { LimeLog.info("Examining refresh rate: "+candidate); + + // Ensure the frame rate stays around 60 Hz for <= 60 FPS streams + if (prefConfig.fps <= 60) { + if (candidate >= 63) { + continue; + } + } + bestRefreshRate = candidate; } }