diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt index 10b1d3547..df21d74b2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt | |||
| @@ -26,6 +26,7 @@ import org.yuzu.yuzu_emu.model.DriverViewModel | |||
| 26 | import org.yuzu.yuzu_emu.model.HomeViewModel | 26 | import org.yuzu.yuzu_emu.model.HomeViewModel |
| 27 | import org.yuzu.yuzu_emu.utils.FileUtil | 27 | import org.yuzu.yuzu_emu.utils.FileUtil |
| 28 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper | 28 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper |
| 29 | import java.io.File | ||
| 29 | import java.io.IOException | 30 | import java.io.IOException |
| 30 | 31 | ||
| 31 | class DriverManagerFragment : Fragment() { | 32 | class DriverManagerFragment : Fragment() { |
| @@ -154,29 +155,29 @@ class DriverManagerFragment : Fragment() { | |||
| 154 | R.string.installing_driver, | 155 | R.string.installing_driver, |
| 155 | false | 156 | false |
| 156 | ) { | 157 | ) { |
| 158 | val driverPath = | ||
| 159 | "${GpuDriverHelper.driverStoragePath}/${FileUtil.getFilename(result)}" | ||
| 160 | val driverFile = File(driverPath) | ||
| 161 | |||
| 157 | // Ignore file exceptions when a user selects an invalid zip | 162 | // Ignore file exceptions when a user selects an invalid zip |
| 158 | try { | 163 | try { |
| 159 | GpuDriverHelper.copyDriverToInternalStorage(result) | 164 | if (!GpuDriverHelper.copyDriverToInternalStorage(result)) { |
| 165 | throw IOException("Driver failed validation!") | ||
| 166 | } | ||
| 160 | } catch (_: IOException) { | 167 | } catch (_: IOException) { |
| 168 | if (driverFile.exists()) { | ||
| 169 | driverFile.delete() | ||
| 170 | } | ||
| 161 | return@newInstance getString(R.string.select_gpu_driver_error) | 171 | return@newInstance getString(R.string.select_gpu_driver_error) |
| 162 | } | 172 | } |
| 163 | 173 | ||
| 164 | val driverData = GpuDriverHelper.customDriverData | 174 | val driverData = GpuDriverHelper.getMetadataFromZip(driverFile) |
| 165 | if (driverData.name == null) { | ||
| 166 | return@newInstance getString(R.string.select_gpu_driver_error) | ||
| 167 | } | ||
| 168 | |||
| 169 | val driverInList = | 175 | val driverInList = |
| 170 | driverViewModel.driverList.value.firstOrNull { it.second == driverData } | 176 | driverViewModel.driverList.value.firstOrNull { it.second == driverData } |
| 171 | if (driverInList != null) { | 177 | if (driverInList != null) { |
| 172 | return@newInstance getString(R.string.driver_already_installed) | 178 | return@newInstance getString(R.string.driver_already_installed) |
| 173 | } else { | 179 | } else { |
| 174 | driverViewModel.addDriver( | 180 | driverViewModel.addDriver(Pair(driverPath, driverData)) |
| 175 | Pair( | ||
| 176 | "${GpuDriverHelper.driverStoragePath}/${FileUtil.getFilename(result)}", | ||
| 177 | driverData | ||
| 178 | ) | ||
| 179 | ) | ||
| 180 | driverViewModel.setNewDriverInstalled(true) | 181 | driverViewModel.setNewDriverInstalled(true) |
| 181 | } | 182 | } |
| 182 | return@newInstance Any() | 183 | return@newInstance Any() |