Slightly modified CD-ROM disc change handling and behavior of the REQUEST SENSE command.
This commit is contained in:
@@ -303,17 +303,20 @@ static int ioctl_medium_changed(void)
|
|||||||
if (cdrom_drive != old_cdrom_drive)
|
if (cdrom_drive != old_cdrom_drive)
|
||||||
old_cdrom_drive = cdrom_drive;
|
old_cdrom_drive = cdrom_drive;
|
||||||
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
|
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((ltoc.TrackData[ltoc.LastTrack].Address[1] != toc.TrackData[toc.LastTrack].Address[1]) ||
|
else
|
||||||
(ltoc.TrackData[ltoc.LastTrack].Address[2] != toc.TrackData[toc.LastTrack].Address[2]) ||
|
{
|
||||||
(ltoc.TrackData[ltoc.LastTrack].Address[3] != toc.TrackData[toc.LastTrack].Address[3]))
|
if ((ltoc.TrackData[ltoc.LastTrack].Address[1] != toc.TrackData[toc.LastTrack].Address[1]) ||
|
||||||
{
|
(ltoc.TrackData[ltoc.LastTrack].Address[2] != toc.TrackData[toc.LastTrack].Address[2]) ||
|
||||||
ioctl_cd_state = CD_STOPPED;
|
(ltoc.TrackData[ltoc.LastTrack].Address[3] != toc.TrackData[toc.LastTrack].Address[3]))
|
||||||
toc = ltoc;
|
{
|
||||||
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
|
ioctl_cd_state = CD_STOPPED;
|
||||||
return 1; /* TOC mismatches. */
|
toc = ltoc;
|
||||||
}
|
cdrom_capacity = ioctl_get_last_block(0, 0, 4096, 0);
|
||||||
|
return 1; /* TOC mismatches. */
|
||||||
|
}
|
||||||
|
}
|
||||||
return 0; /* None of the above, return 0. */
|
return 0; /* None of the above, return 0. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,10 +95,11 @@ static int iso_medium_changed(void)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_cdrom_drive != cdrom_drive)
|
if (old_cdrom_drive != cdrom_drive)
|
||||||
{
|
{
|
||||||
old_cdrom_drive = cdrom_drive;
|
old_cdrom_drive = cdrom_drive;
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iso_changed)
|
if (iso_changed)
|
||||||
|
|||||||
@@ -1976,7 +1976,7 @@ static void atapicommand(int ide_board)
|
|||||||
|
|
||||||
idebufferb[0]=0x80|0x70;
|
idebufferb[0]=0x80|0x70;
|
||||||
|
|
||||||
if ((SCSISense.SenseKey > 0) || (cd_status < CD_STATUS_PLAYING))
|
if ((SCSISense.SenseKey > 0) && ((cd_status < CD_STATUS_PLAYING) || (cd_status == CD_STATUS_STOPPED)))
|
||||||
{
|
{
|
||||||
if (completed)
|
if (completed)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user