Browse Source

[android,ui] driver management: uninstall and refresh upon install hotfix (#3750)

To fix orphan fragments' black flicker transitions, these fragments were bounded to SettingsSubscreenActivity.
Since driver removal is queued for when leaving driver screen, but new activity dies too soon, old uninstall was being cancelled.
Changed to uninstall directly upon leaving screen. Also fixed the driver list refresh right after driver installation (prolly compromised for the same transition reason).

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3750
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: xbzk <xbzk@eden-emu.dev>
Co-committed-by: xbzk <xbzk@eden-emu.dev>
pull/3753/head
xbzk 4 days ago
committed by crueter
parent
commit
2650d22057
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 11
      src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt
  2. 35
      src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt

11
src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt

@ -142,6 +142,17 @@ class DriverManagerFragment : Fragment() {
driverViewModel.onCloseDriverManager(args.game)
}
override fun onResume() {
super.onResume()
refreshDriverList()
}
private fun refreshDriverList() {
driverViewModel.reloadDriverData()
(binding.listDrivers.adapter as? DriverAdapter)
?.replaceList(driverViewModel.driverList.value)
}
private fun setInsets() =
ViewCompat.setOnApplyWindowInsetsListener(
binding.root

35
src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt

@ -71,6 +71,8 @@ class DriverViewModel : ViewModel() {
fun reloadDriverData() {
_areDriversLoading.value = true
driverData = GpuDriverHelper.getDrivers()
.filterNot { driversToDelete.contains(it.first) }
.toMutableList()
updateDriverList()
_areDriversLoading.value = false
}
@ -167,26 +169,25 @@ class DriverViewModel : ViewModel() {
fun onCloseDriverManager(game: Game?) {
_isDeletingDrivers.value = true
updateDriverNameForGame(game)
if (game == null) {
NativeConfig.saveGlobalConfig()
} else {
NativeConfig.savePerGameConfig()
NativeConfig.unloadPerGameConfig()
NativeConfig.reloadGlobalConfig()
}
try {
updateDriverNameForGame(game)
if (game == null) {
NativeConfig.saveGlobalConfig()
} else {
NativeConfig.savePerGameConfig()
NativeConfig.unloadPerGameConfig()
NativeConfig.reloadGlobalConfig()
}
viewModelScope.launch {
withContext(Dispatchers.IO) {
driversToDelete.forEach {
val driver = File(it)
if (driver.exists()) {
driver.delete()
}
driversToDelete.forEach {
val driver = File(it)
if (driver.exists()) {
driver.delete()
}
driversToDelete.clear()
_isDeletingDrivers.value = false
}
driversToDelete.clear()
} finally {
_isDeletingDrivers.value = false
}
}

Loading…
Cancel
Save