mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2026-04-08 18:31:29 -06:00
force60Hrz option
This commit is contained in:
parent
5537f6c60a
commit
77910cc2f9
@ -10,6 +10,7 @@ import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.InputDevice
|
||||
import android.view.KeyEvent
|
||||
@ -47,6 +48,7 @@ import org.citra.citra_emu.utils.FileBrowserHelper
|
||||
import org.citra.citra_emu.utils.EmulationLifecycleUtil
|
||||
import org.citra.citra_emu.utils.EmulationMenuSettings
|
||||
import org.citra.citra_emu.utils.Log
|
||||
import org.citra.citra_emu.utils.MaxRefreshRate
|
||||
import org.citra.citra_emu.utils.ThemeUtil
|
||||
import org.citra.citra_emu.viewmodel.EmulationViewModel
|
||||
|
||||
@ -84,6 +86,10 @@ class EmulationActivity : AppCompatActivity() {
|
||||
|
||||
ThemeUtil.setTheme(this)
|
||||
settingsViewModel.settings.loadSettings()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
MaxRefreshRate.set(this, forceSixtyHrz = true)
|
||||
}
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
secondaryDisplay = SecondaryDisplay(this)
|
||||
secondaryDisplay.updateDisplay()
|
||||
|
||||
@ -58,7 +58,7 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
||||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
MaxRefreshRate.set(this)
|
||||
MaxRefreshRate.set(this, forceSixtyHrz = false)
|
||||
}
|
||||
|
||||
setContentView(binding.root)
|
||||
|
||||
@ -90,7 +90,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
MaxRefreshRate.set(this)
|
||||
MaxRefreshRate.set(this, forceSixtyHrz = false)
|
||||
}
|
||||
|
||||
setContentView(binding.root)
|
||||
|
||||
@ -8,18 +8,30 @@ import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
|
||||
object MaxRefreshRate {
|
||||
//Since Android 15, google automatically forces "games" to be 60 hrz.
|
||||
// This functions sets the refresh rate to max supported rate, unless forced to 60 hrz.
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
fun set(activity: Activity) {
|
||||
fun set(activity: Activity, forceSixtyHrz: Boolean) {
|
||||
val display = activity.display
|
||||
val window = activity.window
|
||||
display?.let {
|
||||
// Get all supported modes and find the one with the highest refresh rate
|
||||
val supportedModes = it.supportedModes
|
||||
val maxRefreshRate = supportedModes.maxByOrNull { mode -> mode.refreshRate }
|
||||
|
||||
if (maxRefreshRate != null) {
|
||||
val layoutParams = window.attributes
|
||||
layoutParams.preferredDisplayModeId = maxRefreshRate.modeId
|
||||
window.attributes = layoutParams
|
||||
val modeId = if (forceSixtyHrz) {
|
||||
supportedModes.firstOrNull { mode -> mode.refreshRate == 60f }?.modeId
|
||||
} else {
|
||||
// Set the preferred display mode to the one with the highest refresh rate
|
||||
maxRefreshRate.modeId
|
||||
}
|
||||
|
||||
if (modeId != null) {
|
||||
layoutParams.preferredDisplayModeId = modeId
|
||||
window.attributes = layoutParams
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user