Fix setting tracks in image when non-CD optical disc does not return a proper track list. Fixes #675

This commit is contained in:
2021-09-30 02:26:33 +01:00
parent 83de7ed38a
commit c1f8c8b8a7

View File

@@ -367,7 +367,8 @@ namespace Aaru.Core.Devices.Dumping
}
start = DateTime.UtcNow;
double imageWriteDuration = 0;
double imageWriteDuration = 0;
bool writeSingleOpticalTrack = true;
if(opticalDisc)
{
@@ -376,8 +377,6 @@ namespace Aaru.Core.Devices.Dumping
sense = _dev.ReadDiscInformation(out readBuffer, out _, MmcDiscInformationDataTypes.DiscInformation,
_dev.Timeout, out _);
bool writeSingleOpticalTrack = true;
if(!sense)
{
DiscInformation.StandardDiscInformation? discInformation =
@@ -560,28 +559,6 @@ namespace Aaru.Core.Devices.Dumping
});
}
}
if(writeSingleOpticalTrack)
{
_dumpLog.WriteLine("Creating single track as could not retrieve track list from drive.");
StoppingErrorMessage?.
Invoke("Creating single track as could not retrieve track list from drive.");
opticalPlugin.SetTracks(new List<Track>
{
new()
{
BytesPerSector = (int)blockSize,
EndSector = blocks - 1,
Sequence = 1,
RawBytesPerSector = (int)blockSize,
SubchannelType = TrackSubchannelType.None,
Session = 1,
Type = TrackType.Data
}
});
}
}
else
{
@@ -653,6 +630,27 @@ namespace Aaru.Core.Devices.Dumping
return;
}
if(writeSingleOpticalTrack)
{
_dumpLog.WriteLine("Creating single track as could not retrieve track list from drive.");
UpdateStatus?.Invoke("Creating single track as could not retrieve track list from drive.");
(_outputPlugin as IWritableOpticalImage)?.SetTracks(new List<Track>
{
new()
{
BytesPerSector = (int)blockSize,
EndSector = blocks - 1,
Sequence = 1,
RawBytesPerSector = (int)blockSize,
SubchannelType = TrackSubchannelType.None,
Session = 1,
Type = TrackType.Data
}
});
}
}
DumpHardwareType currentTry = null;