summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt25
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
26import org.yuzu.yuzu_emu.model.HomeViewModel 26import org.yuzu.yuzu_emu.model.HomeViewModel
27import org.yuzu.yuzu_emu.utils.FileUtil 27import org.yuzu.yuzu_emu.utils.FileUtil
28import org.yuzu.yuzu_emu.utils.GpuDriverHelper 28import org.yuzu.yuzu_emu.utils.GpuDriverHelper
29import java.io.File
29import java.io.IOException 30import java.io.IOException
30 31
31class DriverManagerFragment : Fragment() { 32class 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()