Merge pull request #11915 from t895/startup-freeze

android: Move game deserialization to another thread
This commit is contained in:
liamwhite 2023-10-30 09:59:45 -04:00 committed by GitHub
commit 789c16305d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -49,6 +49,9 @@ class GamesViewModel : ViewModel() {
// Retrieve list of cached games // Retrieve list of cached games
val storedGames = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) val storedGames = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
.getStringSet(GameHelper.KEY_GAMES, emptySet()) .getStringSet(GameHelper.KEY_GAMES, emptySet())
viewModelScope.launch {
withContext(Dispatchers.IO) {
if (storedGames!!.isNotEmpty()) { if (storedGames!!.isNotEmpty()) {
val deserializedGames = mutableSetOf<Game>() val deserializedGames = mutableSetOf<Game>()
storedGames.forEach { storedGames.forEach {
@ -60,8 +63,10 @@ class GamesViewModel : ViewModel() {
} }
val gameExists = val gameExists =
DocumentFile.fromSingleUri(YuzuApplication.appContext, Uri.parse(game.path)) DocumentFile.fromSingleUri(
?.exists() YuzuApplication.appContext,
Uri.parse(game.path)
)?.exists()
if (gameExists == true) { if (gameExists == true) {
deserializedGames.add(game) deserializedGames.add(game)
} }
@ -70,6 +75,8 @@ class GamesViewModel : ViewModel() {
} }
reloadGames(false) reloadGames(false)
} }
}
}
fun setGames(games: List<Game>) { fun setGames(games: List<Game>) {
val sortedList = games.sortedWith( val sortedList = games.sortedWith(