diff --git a/app/src/main/java/com/geode/launcher/GeometryDashActivity.kt b/app/src/main/java/com/geode/launcher/GeometryDashActivity.kt index ba753d2..43d5c24 100644 --- a/app/src/main/java/com/geode/launcher/GeometryDashActivity.kt +++ b/app/src/main/java/com/geode/launcher/GeometryDashActivity.kt @@ -459,7 +459,7 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL val forceRefreshRate = preferenceUtils.getBoolean(PreferenceUtils.Key.FORCE_HRR) if (forceRefreshRate && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - var chosenDisplay = display.supportedModes?.maxByOrNull { it.refreshRate } + val chosenDisplay = display.supportedModes?.maxByOrNull { it.refreshRate } if (chosenDisplay != null) { var chosenRefreshRate = chosenDisplay.refreshRate println("Forcing a refresh rate of $chosenRefreshRate (display ${chosenDisplay.modeId})") diff --git a/app/src/main/java/org/cocos2dx/lib/Cocos2dxGLSurfaceView.kt b/app/src/main/java/org/cocos2dx/lib/Cocos2dxGLSurfaceView.kt index 0feaa4a..f6c585e 100644 --- a/app/src/main/java/org/cocos2dx/lib/Cocos2dxGLSurfaceView.kt +++ b/app/src/main/java/org/cocos2dx/lib/Cocos2dxGLSurfaceView.kt @@ -1,5 +1,6 @@ package org.cocos2dx.lib +import android.app.Activity import android.content.Context import android.opengl.GLSurfaceView import android.os.Build @@ -120,7 +121,19 @@ class Cocos2dxGLSurfaceView(context: Context) : GLSurfaceView(context) { @RequiresApi(Build.VERSION_CODES.R) fun updateRefreshRate(refreshRate: Float) { - holder.surface.setFrameRate(refreshRate, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT) + var chosenRefreshRate = refreshRate + + val chosenDisplay = display.supportedModes?.maxByOrNull { it.refreshRate } + if (chosenDisplay != null && chosenDisplay.refreshRate > refreshRate) { + println("updateRefreshRate found a higher refresh rate (${chosenDisplay.modeId}: ${chosenDisplay.refreshRate} > $refreshRate)") + chosenRefreshRate = chosenDisplay.refreshRate + } + + holder.surface.setFrameRate(chosenRefreshRate, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT) + + if (isAttachedToWindow) { + (context as Activity).window.attributes.preferredRefreshRate = chosenRefreshRate + } } override fun onPause() {