CUERipper: eject button was not working when tray closed with no cd

This commit is contained in:
Grigory Chudov
2013-11-15 21:15:22 -05:00
parent 0855fbfaae
commit 5c9a6c186b

View File

@@ -589,11 +589,25 @@ namespace CUETools.Ripper.SCSI
} }
} }
public unsafe void EjectDisk() private void DoEjectDisk(Device.StartState action)
{
EventStatusNotification status;
m_device.GetEventStatusNotification(true, Device.NotificationClass.Media, out status);
if (status.Valid && status.EventAvailable && status.EventData.Length > 1)
{
// 0 - tray closed no disc
// 1 - tray open
// 2 - tray closed, disc
action = status.EventData[1] == 1 ? Device.StartState.LoadDisk : Device.StartState.EjectDisk;
}
m_device.StartStopUnit(true, Device.PowerControl.NoChange, action);
}
public void EjectDisk()
{ {
if (m_device != null) if (m_device != null)
{ {
m_device.StartStopUnit(true, Device.PowerControl.NoChange, Device.StartState.EjectDisk); DoEjectDisk(Device.StartState.EjectDisk);
} }
else else
{ {
@@ -604,7 +618,7 @@ namespace CUETools.Ripper.SCSI
{ {
try try
{ {
m_device.StartStopUnit(true, Device.PowerControl.NoChange, Device.StartState.LoadDisk); DoEjectDisk(Device.StartState.LoadDisk);
} }
finally finally
{ {