[android,ui] driver: fixed uninstall and refresh upon install

This commit is contained in:
xbzk 2026-03-18 21:06:32 -03:00
parent dc27aef542
commit 0c097614ef
2 changed files with 31 additions and 19 deletions

View file

@ -142,6 +142,17 @@ class DriverManagerFragment : Fragment() {
driverViewModel.onCloseDriverManager(args.game) 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() = private fun setInsets() =
ViewCompat.setOnApplyWindowInsetsListener( ViewCompat.setOnApplyWindowInsetsListener(
binding.root binding.root

View file

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