@@ -26,15 +26,15 @@ import org.dolphinemu.dolphinemu.model.GameFileCache
2626import org.dolphinemu.dolphinemu.services.GameFileCacheManager
2727import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
2828import org.dolphinemu.dolphinemu.utils.BooleanSupplier
29- import org.dolphinemu.dolphinemu.utils.CompletableFuture
3029import org.dolphinemu.dolphinemu.utils.ContentHandler
3130import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
3231import org.dolphinemu.dolphinemu.utils.FileBrowserHelper
3332import org.dolphinemu.dolphinemu.utils.PermissionsHandler
3433import org.dolphinemu.dolphinemu.utils.ThreadUtil
3534import org.dolphinemu.dolphinemu.utils.WiiUtils
3635import java.util.Arrays
37- import java.util.concurrent.ExecutionException
36+ import java.util.concurrent.CountDownLatch
37+ import java.util.concurrent.atomic.AtomicReference
3838
3939class MainPresenter (private val mainView : MainView , private val activity : FragmentActivity ) {
4040 private var dirToAdd: String? = null
@@ -265,33 +265,34 @@ class MainPresenter(private val mainView: MainView, private val activity: Fragme
265265 }
266266
267267 fun importWiiSave (path : String? ) {
268- val canOverwriteFuture = CompletableFuture <Boolean >()
269268 ThreadUtil .runOnThreadAndShowResult(
270269 activity,
271270 R .string.import_in_progress,
272271 0 ,
273272 {
274273 val canOverwrite = BooleanSupplier {
274+ val latch = CountDownLatch (1 )
275+ val decision = AtomicReference <Boolean >()
275276 activity.runOnUiThread {
276277 MaterialAlertDialogBuilder (activity)
277278 .setMessage(R .string.wii_save_exists)
278279 .setCancelable(false )
279280 .setPositiveButton(R .string.yes) { _: DialogInterface ? , _: Int ->
280- canOverwriteFuture.complete(true )
281+ decision.set(true )
282+ latch.countDown()
281283 }
282284 .setNegativeButton(R .string.no) { _: DialogInterface ? , _: Int ->
283- canOverwriteFuture.complete(false )
285+ decision.set(false )
286+ latch.countDown()
284287 }
285288 .show()
286289 }
287290 try {
288- return @BooleanSupplier canOverwriteFuture.get()
289- } catch (e: ExecutionException ) {
290- // Shouldn't happen
291- throw RuntimeException (e)
291+ latch.await()
292292 } catch (e: InterruptedException ) {
293293 throw RuntimeException (e)
294294 }
295+ decision.get() ? : false
295296 }
296297
297298 val message: Int = when (WiiUtils .importWiiSave(path!! , canOverwrite)) {
0 commit comments