Просмотр исходного кода

android: Check if cached games are valid

Fixes bug when you close yuzu, delete games, and reopen to an instant crash.
Charles Lombardo 3 лет назад
Родитель
Сommit
bafd4d344f
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt

+ 9 - 1
src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt

@@ -3,6 +3,8 @@
 
 
 package org.yuzu.yuzu_emu.model
 package org.yuzu.yuzu_emu.model
 
 
+import android.net.Uri
+import androidx.documentfile.provider.DocumentFile
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModel
@@ -44,7 +46,13 @@ class GamesViewModel : ViewModel() {
         if (storedGames!!.isNotEmpty()) {
         if (storedGames!!.isNotEmpty()) {
             val deserializedGames = mutableSetOf<Game>()
             val deserializedGames = mutableSetOf<Game>()
             storedGames.forEach {
             storedGames.forEach {
-                deserializedGames.add(Json.decodeFromString(it))
+                val game: Game = Json.decodeFromString(it)
+                val gameExists =
+                    DocumentFile.fromSingleUri(YuzuApplication.appContext, Uri.parse(game.path))
+                        ?.exists()
+                if (gameExists == true) {
+                    deserializedGames.add(game)
+                }
             }
             }
             setGames(deserializedGames.toList())
             setGames(deserializedGames.toList())
         }
         }