Actually call CDROM_Audio_GetTracksInfo when retrieving
MCI_CDA_STATUS_TRACK_TYPE. WINE_CDA_OPEN maps to MCIERR_HARDWARE.
This commit is contained in:
parent
1dac6eac63
commit
c18391a003
|
@ -104,7 +104,7 @@ static int MCICDA_GetError(WINE_MCICDAUDIO* wmcda)
|
||||||
switch (wmcda->wcda.cdaMode) {
|
switch (wmcda->wcda.cdaMode) {
|
||||||
case WINE_CDA_DONTKNOW:
|
case WINE_CDA_DONTKNOW:
|
||||||
case WINE_CDA_NOTREADY: return MCIERR_DEVICE_NOT_READY;
|
case WINE_CDA_NOTREADY: return MCIERR_DEVICE_NOT_READY;
|
||||||
case WINE_CDA_OPEN: return MCIERR_DEVICE_OPEN;
|
case WINE_CDA_OPEN: return MCIERR_HARDWARE;
|
||||||
case WINE_CDA_PLAY:
|
case WINE_CDA_PLAY:
|
||||||
case WINE_CDA_STOP:
|
case WINE_CDA_STOP:
|
||||||
case WINE_CDA_PAUSE: break;
|
case WINE_CDA_PAUSE: break;
|
||||||
|
@ -428,6 +428,7 @@ static DWORD MCICDA_Status(UINT wDevID, DWORD dwFlags, LPMCI_STATUS_PARMS lpParm
|
||||||
wmcda->wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
|
wmcda->wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
if (dwFlags & MCI_STATUS_ITEM) {
|
if (dwFlags & MCI_STATUS_ITEM) {
|
||||||
|
TRACE("dwItem = %lx\n", lpParms->dwItem);
|
||||||
switch (lpParms->dwItem) {
|
switch (lpParms->dwItem) {
|
||||||
case MCI_STATUS_CURRENT_TRACK:
|
case MCI_STATUS_CURRENT_TRACK:
|
||||||
if (!CDROM_Audio_GetCDStatus(&wmcda->wcda, -1)) {
|
if (!CDROM_Audio_GetCDStatus(&wmcda->wcda, -1)) {
|
||||||
|
@ -523,11 +524,17 @@ static DWORD MCICDA_Status(UINT wDevID, DWORD dwFlags, LPMCI_STATUS_PARMS lpParm
|
||||||
case MCI_CDA_STATUS_TYPE_TRACK:
|
case MCI_CDA_STATUS_TYPE_TRACK:
|
||||||
if (!(dwFlags & MCI_TRACK))
|
if (!(dwFlags & MCI_TRACK))
|
||||||
ret = MCIERR_MISSING_PARAMETER;
|
ret = MCIERR_MISSING_PARAMETER;
|
||||||
else if (lpParms->dwTrack > wmcda->wcda.nTracks || lpParms->dwTrack == 0)
|
else {
|
||||||
ret = MCIERR_OUTOFRANGE;
|
if(!CDROM_Audio_GetTracksInfo(&wmcda->wcda, -1)) {
|
||||||
else
|
WARN("Error reading tracks info\n");
|
||||||
lpParms->dwReturn = (wmcda->wcda.lpbTrackFlags[lpParms->dwTrack - 1] &
|
return MCICDA_GetError(wmcda);
|
||||||
|
}
|
||||||
|
if (lpParms->dwTrack > wmcda->wcda.nTracks || lpParms->dwTrack == 0)
|
||||||
|
ret = MCIERR_OUTOFRANGE;
|
||||||
|
else
|
||||||
|
lpParms->dwReturn = (wmcda->wcda.lpbTrackFlags[lpParms->dwTrack - 1] &
|
||||||
CDROM_DATA_TRACK) ? MCI_CDA_TRACK_OTHER : MCI_CDA_TRACK_AUDIO;
|
CDROM_DATA_TRACK) ? MCI_CDA_TRACK_OTHER : MCI_CDA_TRACK_AUDIO;
|
||||||
|
}
|
||||||
TRACE("MCI_CDA_STATUS_TYPE_TRACK[%ld]=%08lx\n", lpParms->dwTrack, lpParms->dwReturn);
|
TRACE("MCI_CDA_STATUS_TYPE_TRACK[%ld]=%08lx\n", lpParms->dwTrack, lpParms->dwReturn);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -582,7 +589,7 @@ static DWORD MCICDA_Play(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms)
|
||||||
end = MCICDA_CalcFrame(wmcda, lpParms->dwTo);
|
end = MCICDA_CalcFrame(wmcda, lpParms->dwTo);
|
||||||
TRACE("MCI_TO=%08lX -> %u \n", lpParms->dwTo, end);
|
TRACE("MCI_TO=%08lX -> %u \n", lpParms->dwTo, end);
|
||||||
} else
|
} else
|
||||||
end = wmcda->wcda.dwLastFrame;
|
end = wmcda->wcda.dwLastFrame;
|
||||||
|
|
||||||
if (CDROM_Audio_Play(&wmcda->wcda, start, end, dev) == -1)
|
if (CDROM_Audio_Play(&wmcda->wcda, start, end, dev) == -1)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue