From a439ea49707b17fed2d6ff84064af4905a9c05d8 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Tue, 2 Nov 2021 21:15:24 +1000 Subject: [PATCH] Fix cancellation of `AudioExtractor.Extract` fixes d3e1a6db9 --- src/BizHawk.Client.DiscoHawk/AudioExtractor.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/BizHawk.Client.DiscoHawk/AudioExtractor.cs b/src/BizHawk.Client.DiscoHawk/AudioExtractor.cs index c202e9c16d..e84d765b10 100644 --- a/src/BizHawk.Client.DiscoHawk/AudioExtractor.cs +++ b/src/BizHawk.Client.DiscoHawk/AudioExtractor.cs @@ -15,10 +15,14 @@ namespace BizHawk.Client.DiscoHawk { var dsr = new DiscSectorReader(disc); - bool confirmed = false; + var shouldHalt = false; + bool? overwriteExisting = null; // true = overwrite, false = skip existing (unimplemented), null = unset + var tracks = disc.Session1.Tracks; Parallel.ForEach(tracks, track => { + if (shouldHalt) return; + if (!track.IsAudio) return; @@ -37,11 +41,15 @@ namespace BizHawk.Client.DiscoHawk string mp3Path = $"{Path.Combine(path, fileBase)} - Track {track.Number:D2}.mp3"; if (File.Exists(mp3Path)) { - if (!confirmed) + if (overwriteExisting is null) { var dr = MessageBox.Show("This file already exists. Do you want extraction to proceed overwriting files, or cancel the entire operation immediately?", "File already exists", MessageBoxButtons.OKCancel); - if (dr == DialogResult.Cancel) return; - confirmed = true; + if (dr == DialogResult.Cancel) + { + shouldHalt = true; + return; + } + overwriteExisting = true; } File.Delete(mp3Path);