diff --git a/DiscImageChef.Core/Devices/Dumping/ATA.cs b/DiscImageChef.Core/Devices/Dumping/ATA.cs index 9872090ad..910af896c 100644 --- a/DiscImageChef.Core/Devices/Dumping/ATA.cs +++ b/DiscImageChef.Core/Devices/Dumping/ATA.cs @@ -352,7 +352,7 @@ namespace DiscImageChef.Core.Devices.Dumping break; } - DicConsole.Write("\rTrimming sector {0}", badSector); + PulseProgress?.Invoke($"\rTrimming sector {badSector}"); bool error = ataReader.ReadBlock(out cmdBuf, badSector, out duration); @@ -390,9 +390,9 @@ namespace DiscImageChef.Core.Devices.Dumping break; } - DicConsole.Write("\rRetrying sector {0}, pass {1}, {3}{2}", badSector, pass, - forward ? "forward" : "reverse", - persistent ? "recovering partial data, " : ""); + PulseProgress?.Invoke(string.Format("\rRetrying sector {0}, pass {1}, {3}{2}", + badSector, pass, forward ? "forward" : "reverse", + persistent ? "recovering partial data, " : "")); bool error = ataReader.ReadBlock(out cmdBuf, badSector, out duration); @@ -452,8 +452,8 @@ namespace DiscImageChef.Core.Devices.Dumping if(currentSpeed < minSpeed && currentSpeed != 0) minSpeed = currentSpeed; #pragma warning restore RECS0018 // Comparison of floating point numbers with equality operator - DicConsole.Write("\rReading cylinder {0} head {1} sector {2} ({3:F3} MiB/sec.)", cy, - hd, sc, currentSpeed); + PulseProgress + ?.Invoke($"\rReading cylinder {cy} head {hd} sector {sc} ({currentSpeed:F3} MiB/sec.)"); bool error = ataReader.ReadChs(out cmdBuf, cy, hd, sc, out duration); diff --git a/DiscImageChef.Core/Devices/Dumping/Dump.cs b/DiscImageChef.Core/Devices/Dumping/Dump.cs index f2b7b6b26..5ed0bafe6 100644 --- a/DiscImageChef.Core/Devices/Dumping/Dump.cs +++ b/DiscImageChef.Core/Devices/Dumping/Dump.cs @@ -6,5 +6,6 @@ namespace DiscImageChef.Core.Devices.Dumping public event ErrorMessageHandler ErrorMessage; public event ErrorMessageHandler StoppingErrorMessage; public event UpdateProgressHandler UpdateProgress; + public event PulseProgressHandler PulseProgress; } } \ No newline at end of file diff --git a/DiscImageChef/Commands/DumpMedia.cs b/DiscImageChef/Commands/DumpMedia.cs index b5e3f305c..969eb5e3d 100644 --- a/DiscImageChef/Commands/DumpMedia.cs +++ b/DiscImageChef/Commands/DumpMedia.cs @@ -300,6 +300,7 @@ namespace DiscImageChef.Commands dumper.ErrorMessage += Progress.ErrorMessage; dumper.StoppingErrorMessage += Progress.ErrorMessage; dumper.UpdateProgress += Progress.UpdateProgress; + dumper.PulseProgress += Progress.PulseProgress; if(dev.IsUsb && dev.UsbVendorId == 0x054C && (dev.UsbProductId == 0x01C8 || dev.UsbProductId == 0x01C9 || dev.UsbProductId == 0x02D2)) diff --git a/DiscImageChef/Progress.cs b/DiscImageChef/Progress.cs index 99428112b..5a35050d4 100644 --- a/DiscImageChef/Progress.cs +++ b/DiscImageChef/Progress.cs @@ -48,6 +48,11 @@ namespace DiscImageChef DicConsole.Write("\r" + text); } + internal static void PulseProgress(string text) + { + DicConsole.Write("\r" + text); + } + internal static void InitProgress2() { } internal static void EndProgress2()